随笔分类 -  递推递归

OJ上递推递归相关题,递推递归学习笔记
摘要:题目:http://poj.org/problem?id=2299题目大意:给出一串数字,求出逆序对的数目思路:用归并排序提交情况:AC 1次总结:拖了好久的题,终于做了。先开始对归并排序思路还是不理解,经过同学讲终于明白了。写题之前一定要仔细将原理想清楚啊。AC code:View Code 1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 #define MAXN (500000 + 100) 5 #define I64 __int64 6 7 I64 num[MAXN] 阅读全文
posted @ 2011-07-22 08:23 cloehui 阅读(260) 评论(0) 推荐(0)
摘要:题目:http://acm.hdu.edu.cn/showproblem.php?pid=2047开心~~第一次完全自己做出来的递推~~虽然想的过程有些纠结,但是规律毕竟是找出来了。思路:f[i]表示长度为i时的方案数, o[i]表示长度为i时所有方案中末位字母是o的个数.1)当长度n = 1时,有三种涂法 : E、 O、 F. f[1] = 1.其中O的个数为1, o[1] = 1.2)当长度n = 2时,E、 F分别又对应出3种情况(E、O、F), O对应出两种情况(E、F),因为不能有OO出现.末位O的个数o[2] = 2.f[2] = 3 * f[1] - 1 = 3 * f[1] - 阅读全文
posted @ 2011-07-20 13:10 cloehui 阅读(444) 评论(0) 推荐(0)
摘要:题目:http://acm.hdu.edu.cn/showproblem.php?pid=2046知道应该用递归递推来做,但是一直找不到规律……拖了好久,终于决定今天做完。苦思无果搜题解,发现代码只有几行…… 递推递归果然神奇啊!!!思路:f(1)=1,f(2)=2,f(3)=5,当有n个方格的时候,有两种铺法: 1)先铺好n-1个格,有f(n-1)个方法,再铺第n层的时候只有一种方法,所以总方法是1*f(n-1); 2)先铺好n-2格,有f(n-2)个方法,再铺后面两层的时候只能两个都横着铺(否则与第一种情况重复),所以也只有一种情况,总方法数是1*f(n-2)再没有其他情况了。 推出f(n 阅读全文
posted @ 2011-07-20 13:07 cloehui 阅读(579) 评论(0) 推荐(0)
摘要:题目:http://poj.org/problem?id=1664自己想了半天,什么排列组合之类的,后来去搜题解,才知道是用递归…… 强大啊……个人感觉递归好神奇啊,反正就是一次一次调用然后结果就出来了,不用去想它具体是怎么实现的。 这题的思想是找递归关系,我们不妨令f(m,n)表示m个苹果放到n个盘子里有多少种放法,下面对不同的情况给予讨论:(1):当盘子数为1的时候,只有一种放法就是把所有苹果放到一个盘子里。(2):当苹果数为1的时候,也只有一种放法,注意题目中说明,盘子之间并无顺序,所以不管这个苹果放在哪个盘子里,结果都算一个。(3):当m<n时,因为此时最多只能放到m个盘子中去( 阅读全文
posted @ 2011-07-20 11:10 cloehui 阅读(797) 评论(0) 推荐(1)
摘要:题目:http://poj.org/problem?id=2231个人认为这是一道水题……先输入N表示有N头牛,接下来的N个数是各个牛所在的位置。如果一头牛对另一头牛Moo,那么Moo数就是1号牛所在位置i与2号牛所在位置j的差值,又因为1号牛Moo过去,所以2号牛也要Moo回来,于是Moo数就变为2倍了。1号牛要对剩余所有(N-1)头牛都Moo,如果我们将牛按顺序排好,每头牛i只对它身后的(N-i)头牛Moo,意思是,我们只考虑某头牛Moo出去的,而不考虑别的牛对它Moo回来的,那么它也不对在它前面的牛Moo,那么这就是一个简单的数学问题,每头牛i只对身后的(N-i)头牛Moo。因为所有牛还 阅读全文
posted @ 2011-07-20 10:57 cloehui 阅读(247) 评论(0) 推荐(0)