随笔分类 -  算法_递归

分治__比赛安排
摘要:注意碰到“次方”,可以往分治上靠 阅读全文
posted @ 2014-05-19 15:42 wwjyt 阅读(127) 评论(0) 推荐(0)
递归__汉诺塔
摘要:要将n个盘子从a 通过b 移动到c那么 就要先将 n-1个盘子从a通过c 移动到b再将a最底下的盘子移动到 c之后再将 n-1个盘子从b通过a移动到c由此可得到 递归公式hanoi(int n,char from,char denpend_on,char to):{ //n:盘子数from:a,d... 阅读全文
posted @ 2014-05-19 14:50 wwjyt 阅读(188) 评论(0) 推荐(0)
简单递归____Fibonacci数列
摘要:1 #include 2 int fun(int x) 3 { 4 if(x==1||x==2) 5 return 1; 6 else 7 return fun(x-1)+fun(x-2); 8 } 9 int main()10 {11 int n,i;12 scanf("%d",&n);13 printf("%d",fun(n)%10007);14 return 0;15 } 阅读全文
posted @ 2014-03-18 22:34 wwjyt 阅读(163) 评论(0) 推荐(0)
递归____蛮好的例子 蓝桥
摘要:某电视台举办了低碳生活大奖赛。题目的计分规则相当奇怪:每位选手需要回答10个问题(其编号为1到10),越后面越有难度。答对的,当前分数翻倍;答错了则扣掉与题号相同的分数(选手必须回答问题,不回答按错误处理)。每位选手都有一个起步的分数为10分。某获胜选手最终得分刚好是100分,如果不让你看比赛过程,你能推断出他(她)哪个题目答对了,哪个题目答错了吗?如果把答对的记为1,答错的记为0,则10个题目的回答情况可以用仅含有1和0的串来表示。例如:0010110011 就是可能的情况。你的任务是算出所有可能情况。每个答案占一行。void play(int time,int score) { i... 阅读全文
posted @ 2013-07-09 22:31 wwjyt 阅读(170) 评论(0) 推荐(0)
简单递归____辗转相除法
摘要:其中“a mod b”是指取 a ÷ b 的余数。例如,123456 和 7890 的最大公因子是 6,这可由下列步骤看出: aba mod b12345678905106789051062784510627842322278423224622322462124621261260int gcd(int a,int b){ if(b == 0) return a; else return gcd(b, a%b);}30 = 6 * 518 = 6 * 35 * 3 * 6 即为最小公倍数 阅读全文
posted @ 2013-03-20 21:46 wwjyt 阅读(340) 评论(0) 推荐(0)
简单递归____判断整型数组a[N]是不是升序排列
摘要:升序表示越来越大 即1 2 3 4 5 6#include #include #include #include void fun(int array[], int arraySize, int index){ if(arraySize == 0)//Q:此段其实只需要第一次判断,如何实现呢? { printf("数组为空!\n"); return; } else if(index == (arraySize - 1) )//已经到最后一个,arraySize需-1 { printf("满足升序!\n"); ... 阅读全文
posted @ 2013-02-23 19:32 wwjyt 阅读(558) 评论(0) 推荐(0)
简单递归____判断一个字符串是否为回文
摘要:1.递归的作用在于把问题的规模不断缩少,直到问题缩少到能简单地解决2.新问题与原问题有着相同的形式3.递归的结束需要简单情景解法:我们只需要以去掉两端的字符的形式一层层检查,每一次的检查都去掉了两个字符,这样就达到了缩少问题规模的目的。#include #include #include #include void fun(char *array, int arraySize, int index){ //printf("index:%d\n",index); //printf("size:%d\n",arraySize); //printf(" 阅读全文
posted @ 2013-02-23 00:48 wwjyt 阅读(251) 评论(0) 推荐(0)