摘要:
1,给定一个正数n(n>0),求n!,n可能会很大,但n不会超过2,000,相应的阶乘的结果不会超过8000位(这里我只是估计了一下)十进制数,输入:3 输出:6分析:因为n不会超过2,000,所以n可以用一个int类型来表示,这个题目的难点是如何去表示阶乘的结果。我们可以考虑用数组a[0],a[1],a[2]...来表示最终结果的个位,十位,百位....a的大小可以用一个常数数组a[8000]来表示,核心是我们如何模拟阶乘运算的过程,细节就是如何处理进位,代码如下://输入为N<2000,打印N!void factor(int N){int *a=new int[8000](); 阅读全文
posted @ 2011-12-22 23:03
kevin Lee
阅读(202)
评论(0)
推荐(0)
摘要:
问题描述:给定一个正整数数组a,大小为n,数组的每个元素取值于[0,1,...,K],K>0,将这个数组划分为两个集合A1和A2,使得这两部分元素和最小,S1为A1所有元素求和,S2为A2所有元素求和,即|S1-S2|最小。分析:由于数组中的元素都是正数,我们用SUM来表示数组a的所有元素的和,那么我们只要求一个集合,使得这个集合所有元素的和尽量接近SUM/2即可,我们用Q[i,j]表示用数组中任... 阅读全文
posted @ 2011-12-22 21:48
kevin Lee
阅读(2989)
评论(1)
推荐(1)
摘要:
问题描述:见BOP(编程之美) 3.3这里除了给出效率比较低的递归版本之外,还给出了效率比较高的递归的备忘录版本和递推版本,时间和空间复杂度都是O(n^2),在递归的备忘录版本和递推版本中,我们定义两个字符串为strA和strB,长度分别为size_A和size_B,C[i,j]为子串strA[i],strA[i+1],...,strA[size_A-1]和strB[i],strB[i+1],..... 阅读全文
posted @ 2011-12-22 17:22
kevin Lee
阅读(935)
评论(0)
推荐(0)