编程之美上的题目,是一道dp的题目,设dp[i][v]表示是否可以找到i个数,使得他们的和为v,是的话,dp[i][v]=1,否则为0。状态转移方程:dp[i][v]=dp[i-1][v-arr[k]] if(v>=arr[k]&&dp[i-1][v-arr[k]]=1),边界条件是dp[0][.....
分类:
其他好文 时间:
2014-09-02 21:20:35
阅读次数:
169
题目:有一个无序、元素个数为2n的正整数组,要求:如何能把这个数组分割为元素个数为n的两个数组,并使两个子数组的和最接近?1 1 2 -> 1 1 vs 2看题时,解法的时间复杂度一般都大于或等于O(n^2)。突然灵感一闪,发现一个新的解法,应该算是一个动态规划的过程吧,思路比较简单,请看代码。空间...
分类:
其他好文 时间:
2014-09-01 15:14:53
阅读次数:
347
方法一:从根节点开始,将每层节点压入一个数组,cur代表当前访问节点,last代表下一层第一个节点,遍历数组可得层次遍历;代码: 1 #include 2 #include 3 #include 4 using namespace std; 5 6 template 7 class ...
分类:
其他好文 时间:
2014-08-31 21:20:01
阅读次数:
326
方法一:使用递归思想代码: 1 #include 2 #include 3 using namespace std; 4 5 int minValue(int t1,int t2,int t3); 6 int calculateStringDistance(string strA,int pAbe....
分类:
其他好文 时间:
2014-08-31 21:18:11
阅读次数:
187
题目要求输出“将”(A),“帅”(B)的所有合法位置,并且只能使用一个字节存储变量;解法一: 1 #include 2 using namespace std; 3 4 int main() 5 { 6 int i=81; 7 while(i--) 8 { 9 ...
分类:
其他好文 时间:
2014-08-28 14:47:39
阅读次数:
152
题目:给定一棵二叉树,结点的距离就是两个结点之间路径包含的结点的数目,求结点的最大距离。可以参考这两篇文章:《编程之美: 求二叉树中节点的最大距离》的另一个解法和Tree Diameter思路:在每一个结点处,求两个信息:以该结点为根的树的高度,以及以该结点为根的树中包含的最大距离。因为所求的最大距...
分类:
其他好文 时间:
2014-08-27 16:21:08
阅读次数:
188
今天在学习《编程之美》的时候,看到一个二分查找的题目,发现原来我真的不懂二分查找。 二分查找时候注意的事项: 在求二分查找的中间点时没有使用midIndex = (minIndex + maxIndex) / 2是因为,以免 minIndex + maxIndex之后会导致溢出而出现错误。注...
分类:
其他好文 时间:
2014-08-26 21:21:16
阅读次数:
152
2.1 求二进制中1的个数。2.2 求n!末尾有多少个0 和 求n!的二进制表示中最低位1的位置。2.3 找出数量超过总数一半的记录。 扩展:3个发帖都超过了总数N的1/4。2.4 十进制1~N 所有整数中1的个数; 满足F(N)=N的最大的N是多少。 扩展:CC上所有2的个数。2.5 寻找最大的k...
分类:
其他好文 时间:
2014-08-26 21:19:26
阅读次数:
190
关于递归程序:递归程序结构包括三部分:递归出口、逻辑处理(需要处理的问题)、递归调用(衔接)。递归与数学归纳法:递归是数学归纳法在计算机程序中的体现。使用递归思想设计程序时,我们设置base case,并假设我们会获得n-1的结果,并实现n的结果。这就好像数学归纳法,我们只关注初始和衔接,而不需要关...
分类:
其他好文 时间:
2014-08-24 15:27:12
阅读次数:
210