递归
qingen123
生命不息 奋斗不止 LINUX爱好者 世界因你的敲打而改变
展开
-
字符串全排列
输入一个字符串,输出所有该字符串所有排列情况,如”abc”,有全排列:abc、acb、bac、bca、cab 和cba。分析:该题有两种解法,一个是递归实现,第二是使用字典序排列。字典序排列的原理主要是把升序的排列(当然,也可以实现为降序)作为当前排列开始,然后依次计算当前排列的下一个字典序排列。对当前排列从后向前扫描,找到一对为升序的相邻元素,记为i和j(i 下面为实现代码:原创 2013-10-06 19:40:41 · 916 阅读 · 0 评论 -
从1-n这n个数里面,随机选出若干个数,使之和为sum
给你一个接口find_factor(int sum,int n),实现这个功能,求出从1到n的n个数中选出若干个数使之和为sum的所有可能情况,并打印出来;分析:典型的0-1背包问题,总和一定,挑出几个和满足条件的。不过这个用递归的思想解决比较容易,也容易懂,核心思想见代码:代码如下:// [9/17/2013 qingezha] 和为sum ,加数为 1 到 n,随机选出若干个原创 2013-10-07 18:41:38 · 2410 阅读 · 0 评论 -
判断数组里面的若干个数的和是否为给定的数
给出一个整型数组num[],和一特定值x,判断数组中是否存在一个或若干个元素之和为x,若存在则返回true,否则false。分析:该题用递归解决时,代码实现相当简单。但其时间复杂度为O(2^n),应该非最优。不过思路很清晰:假设数组中存在若干个数之和为x,将该若干个数组成的数组姑且称之为“和数组”。那么对于num[]中的每个元素,要么在“和数组”中,要么不在。所以,对于每个元素num[i],如原创 2013-10-07 20:30:37 · 2135 阅读 · 0 评论 -
单链表倒置(顺序与递归)
单链表倒置,给你一个头指针,用递归与非递归的方法分别实现;分析见代码;代码如下:// [9/30/2013 qingezha] 链表倒置 循环与递归形式// 一般形式,1—>2->3->4 现在1<-2<-3<-4 那么改变1的next的时候需要保存指向2的指针,然后同理处理2// 需要保存的,用直译(见词知意)的表达出来比如:pre前面,next后面,cur当前,然后循环原创 2013-10-10 10:49:08 · 1824 阅读 · 0 评论