摘要:
转自:http://blog.csdn.net/hackbuteer1/article/details/7390093^: 按位异或;&:按位与; | :按位或计算机系统中,数值一律用补码来表示:因为补码可以使符号位和数值位统一处理,同时可以使减法按照加法来处理。对补码做简单介绍:数值编码分为原码,反码,补码,符号位均为0正1负。原码 -> 补码: 数值位取反加1补码 -> 原码: 对该补码的数值位继续 取反加1补码 的绝对值(称为真值):正数的真值就是本身,负数的真值是各位(包括符号位)取反加1(即变成原码并把符号位取反).b -> -b : 各位(包括符号位)取反 阅读全文
摘要:
转自:http://blog.csdn.net/beiyeqingteng/article/details/6958320有两个序列a,b,大小都为n,序列元素的值任意整数,无序;要求:通过交换a,b中的元素,使[序列a元素的和]与[序列b元素的和]之间的差最小。例如: var a=[100,99,98,1,2, 3];var b=[1, 2, 3, 4,5,40];(微软100题第32题)。假设当前数组和的差为A:A = sum[a] - sum[b]交换两个元素a[i],b[i],则差为A' = sum[a] -a[i]+b[i] - (sum[b]-b[i]+a[i]) = su 阅读全文
摘要:
《编程之美》2.16节 这是一个DP(动态规划)问题。 以串1, -1, 2, -3, 4, -5, 6, -7为例,递归子结构为:incr[i] = max{1, LIS[k]+1};对k <i, 且array[k] < array[i] LIS表示以array[i]为最大元素的最长递增子序列的长度.prev[N]用于存储该元素的前驱元素。 1 def findInc(array): 2 incr = [1] * len(array) 3 prev = [-1] * len(array) #record the sequence's previous element .. 阅读全文
摘要:
在一个字符串中找到第一个只出现一次的字符。如输入adaccbeff,则输出d。 1 #include<iostream> 2 #include<string> 3 using namespace std; 4 5 char find(const string & s1) 6 { 7 int hash[26] = {0}; 8 for(int i = 0; i < s1.size(); i++) 9 hash[s1[i]-'a']++;10 11 int i;12 for(i = 0; i < s1.size(); i++) /... 阅读全文
摘要:
给字符串s1、s2,在s1中找包含s2里所有字符的最小子串。类似的问题:一串首尾相连的珠子(m个),有N种颜色(N<=10),设计一个算法,取出其中一段,要求包含所有N中颜色,并使长度最短。(July,精选微软等公司数据结构+算法面试100题,40题2)----在对s1中的子串进行判断时,对每个当前字符c,擦除在s2中的含有c的字符,这样最后s2为空时,说明该子串包含s2中的所有字符。----使用myremove的方法,要求s2中没有重复字符,更多的方法以及更详细的介绍 :(July,程序员编程艺术第二章:字符串包含及相关问题扩展) 1 /* 2 * Description: give 阅读全文
摘要:
转自:July精选微软等公司数据结构+算法,经典面试100题 43 题1.前序、中序、后序的递归实现就是将printf访问语句放在递归语句的前、中、后三个位置。2.非递归实现要借用栈stack来实现。 因为对于一棵树(子树)t,如果t 非空,访问完t 的根结点值后,就应该进入t 的左子树,但此时必须将t 保存起来,以便访问完其左子树后,进入其右子树的访问。 即在t 处设置一个回溯点,并将该回溯点进栈保存。在整个二叉树前序遍历的过程中,程序始终要做的工作分成俩个部分:1.当前正在处理的树(子树)2.保存在栈中等待处理的部分。//注:当栈中元素位于栈顶即将出栈时,意味着其根结点和左子树已访问完.. 阅读全文
摘要:
Python编辑器IDLE傻瓜入门下载python进行安装,默认自带此工具 开始->程序->Python 2.*/3.*-> IDLE (Python GUI) 如此就打开了Python Shell->File->New window(Ctrl+N) 就出现了python编辑器 编写代码比如print('Hello World') 然后保存文件为helloworld.py(注意记得加py扩展名,默认是不会自动加添的)。 在编辑器窗口按F5即可在Python Shell中看到结果。如何debug 1.设置断点:在Python编辑器中要调试的代码行右击 阅读全文
摘要:
来源:http://www.cnblogs.com/justinzhang/archive/2012/09/17/2689642.html 华为2013年招聘-上机题--多单词匹配查找在一个给定的源字符串中查找由若干个单词组成的字串(模式串),要求如下: 1、 源字符串与模式串组成格式为:单词<空格>单词<空格>单词...,不用考虑标点符号;源字符串与模式串部字符长度≤64; 2、 单词由数字、字母组成,不区分大小写; 3、 优先匹配模式串中字符多的单词,如模式串为”he hello hell”,源字符串为”hello world”,则源字符串中”hello”匹配模式串 阅读全文
摘要:
转自:http://blog.csdn.net/hackbuteer1/article/details/67264191.你让一些人为你工作了七天,你要用一根金条作为报酬。金条被分成七小块,每天给出一块。如果你只能将金条切割两次,你怎样分给这些工人?切割两次,分出三块 1、2、 4。第一天 付1第二天 收回1,付2第三天 付1(1+2)第四天 收回1、2 付4第五天 付1 (4+1)第六天 收回1 付2(4+2)第七天 付1 (4+2+1)2.有两个房间,一间房里有三盏灯,另一间房有控制着三盏灯的三个开关,这两个房间是 分割开的,从一间里不能看到另一间的情况。现在要求受训者分别进这两房间一次, 阅读全文
摘要:
(July——微软等面试100题 21和25http://topic.csdn.net/u/20101023/20/5652ccd7-d510-4c10-9671-307a56006e6d.html)21.输入两个整数 n 和 m,从数列1,2,3.......n 中 随意取几个数,使其和等于 m ,要求将其中所有的可能组合列出来.解法:采用0-1背包的思想,使用递归方法: 当选择n时,就用剩下的n-1填满 m-n; 当不选择n是,就用剩下的n-1填满m; 注意的是,当m=n时,即找到了符合条件的解。 1 #include<iostream> 2 #include<list& 阅读全文