云淡风轻
Stay foolish,stay hungry.
摘要: 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)
摘要: 还是http://blog.163.com/kevinlee_2010/blog/static/16982082020111121104120651/中那5个题目,现在的前提是,这个有序数组不知道被谁做了循环移位,具体移了多少不知道,然后写出算法求解这5个题目,抓狂了吧? 哈哈 要的就是这个感觉~ 阅读全文
posted @ 2011-12-21 22:55 kevin Lee 阅读(101) 评论(0) 推荐(0)
摘要: 第四题稍微有点难度://二分查找在字符串数组arr中寻找最大的i,使得arr[i]0) return BS_max_less(arr,v,i,mid-1); else return BS_max_less(arr,v,mid,j);//注意mid的下标}第四题分析出来了 第五题就不难了://二分查找在字符串数组arr中寻找最小的i,使得arr[i]>v,不存在则返回-1,//递归版本int B... 阅读全文
posted @ 2011-12-21 22:49 kevin Lee 阅读(255) 评论(0) 推荐(0)
摘要: 1,给定一个有序(不降序)数组arr,求任意一个i使得arr[i]等于v,不存在则返回-1。2,给定一个有序(不降序)数组arr,求最小的i使得arr[i]等于v,不存在则返回-1。3,给定一个有序(不降序)数组arr,求最大的i使得arr[i]等于v,不存在则返回-1。4,给定一个有序(不降序)数组arr,求最大的i使得arr[i]小于v,不存在则返回-1。5,给定一个有序(不降序)数组arr,... 阅读全文
posted @ 2011-12-21 22:41 kevin Lee 阅读(301) 评论(0) 推荐(0)
摘要: 问题描述:如题,给定一个字符串str和其长度n,求该字符串的一个最长公共回文子串的长度(公共子串个公共子序列是两个不同的概念)。并打印出该回文子串。解答:1,首先给出一个比较直观的解法。根据回文的性质,我们可以把str进行逆转得到str1,然后求str和str1的最长公共子串,那么该子串的长度就是str的最长回文子串的长度,该公共子串就是最长的那个回文子串。也即我们把这个题目转化为求两个字符串st... 阅读全文
posted @ 2011-12-21 12:08 kevin Lee 阅读(5081) 评论(2) 推荐(0)
摘要: A palindrome is a symmetrical string, that is, a string read identically from left to right as well as from right to left. You are to write a program which, given a string, determines the minimal numb... 阅读全文
posted @ 2011-12-21 12:06 kevin Lee 阅读(310) 评论(0) 推荐(0)
摘要: 了解的C/C++编译器如下: GCC家族有 Cygwin Mingw32 DJGPP Dev-C++(Mingw32) 还有正宗的GNU GCC 2.95.5~3.0.0.4版本 MS家族有 MSC 5.0、6.0、7.0 MSQC 1.0、2.5 MSVC 1.0、4.2、6.0、7.0 Borland家族有 TC 1.0、2.0 TC++ 1.01、3.0 BC 3... 阅读全文
posted @ 2011-12-16 21:13 kevin Lee 阅读(2137) 评论(0) 推荐(0)
摘要: 有时根据题意需得根据输入的二维数来动态的创建二维数组,那么此时就不能想以前一样直接定义多少行多少列了。因为不知道行列多少,假如设定太大浪费空间,申请太小完成不了程序的数据存储。因此需要合理的开辟二维空间。以下的两种方法都可以建立动态的二维空间数组。方法一:int i,j;int r,c;int **a; //创建二维指针来指向数组scanf("%d%d",&r,&c);a = (int **)... 阅读全文
posted @ 2011-12-14 20:11 kevin Lee 阅读(18176) 评论(0) 推荐(1)