摘要: 转自: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.有两个房间,一间房里有三盏灯,另一间房有控制着三盏灯的三个开关,这两个房间是 分割开的,从一间里不能看到另一间的情况。现在要求受训者分别进这两房间一次, 阅读全文
posted @ 2012-09-26 21:44 dandingyy 阅读(1055) 评论(0) 推荐(0) 编辑
摘要: (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& 阅读全文
posted @ 2012-09-26 21:36 dandingyy 阅读(3584) 评论(0) 推荐(0) 编辑
摘要: 0-1背包问题是一个典型的动态规划问题。描述如下:现在又一个可以载重量为M的背包,另外有N个物品,每个物品重量和价值分别为w[i]和v[i],现在要求选择物品放入背包,使其在不超过重量的情况下有最大价值。问题的递推表达式如下:设C为当前背包的容量。 当w[n] > C时, f(n, C) = f(n-1, C) 当w[n] <=C时, f(n, C) = max{f(n-1, C), v[n] + f(n-1, C-w[n])}可以利用上式得到采用递归方法计算函数f的代码,递归结束是:f(i, 0) = 0或 f(0, j)=0.另外也可以根据上面的最优子结构采用动态规划的方法,使 阅读全文
posted @ 2012-09-26 20:21 dandingyy 阅读(282) 评论(0) 推荐(0) 编辑