递推递归
闻道-问道
这个作者很懒,什么都没留下…
展开
-
递归递推之王小二切饼
题目大概:饼不能离开砧板,一张饼切n刀能切成几份。思路:在纸上画一画这个饼,发现没切n刀就会增加n份,于是这个问题就简单了。感想:原来递归递推题并不是都需要推公式,有的是找规律,找到后会发现很简单。代码:#include using namespace std;int main(){int n,sum=1;cin>>n;for(int i=1;in;原创 2017-03-19 20:31:43 · 1066 阅读 · 0 评论 -
递归递推之 青蛙过河
题目大概:青蛙从a岸移动到b岸,小溪中有s个石头,y个荷叶。石头和荷叶都只能容纳一只青蛙,但石头上可以在大青蛙上放小青蛙,而荷叶上不行。刚开始青蛙小的放在大的上面,都在a岸,然后移动到b岸,从a岸离开或者到达b岸后不能回返,问最多有多少青蛙到达b岸。思路:a[n]为有n个石头的青蛙数。1 如果有s=0个石头,m个荷叶,很显然,可以移动m+1个青蛙。2 如果有s=1个石头,m...原创 2017-03-26 18:04:01 · 2253 阅读 · 0 评论 -
递归递推之二分查找
题目大概:输入n,输入n组数据,在输入m,输入m个数,在n组数据中找到这m个数的位置。思路:用二分法,每次与中间变量比较,大于,则取中间变量和最大值之间的数在搜索,反之,取最小值和中间变量之间的数搜索。感想:这个题想法是很简单的 ,但题目最多则是300万组数据,而时间限制是600ms。所以其中的细节需要特别注意,尤其是输入输出,要用scanf和printf。并且我还了解原创 2017-03-26 18:27:09 · 1057 阅读 · 0 评论 -
递归递推之三国佚事——巴蜀之危
题目大概:有n封书信,全部发错了地方,问有多少种错误方式。思路:a[n]为n封书信的错误方式。按递推的想法,先是前面的书信已经发好。第n封书信可以有两种情况:1。。这封书信送到了第k个应该送的地方,而第k封书信送到了第n封书信应该送的地方。其他书信不变,并且k有n-1个,有(n-1)*a[n-1]种。2。。这封书信放到了第k个应该送的地方,而第k封书信与其他信一起打乱了原创 2017-03-26 18:43:15 · 296 阅读 · 0 评论 -
递归递推之 汉诺塔系列1
题目大概:n个盘子的汉诺塔问题的最少移动次数是2^n-1,即在移动过程中会产生2^n个系列。由于发生错移产生的系列就增加了,这种错误是放错了柱子,并不会把大盘放到小盘上,即各柱子从下往上的大小仍保持如下关系:n=m+p+qa1>a2>...>amb1>b2>...>bpc1>c2>...>cq计算所有会产生的系列总数。思路:实话说,这个题真实没读懂,但观察输入输原创 2017-03-26 18:50:40 · 357 阅读 · 0 评论 -
递归递推之螺旋方阵
题目大概:打印方阵,输入n,打印如图所示的方阵。思路:用二维数组,a[n][m]。观察这个图片,得到数字从一开始增加,而增加的顺序是 1。。m不变,n先从最小增加到最大。2。。然后n不变,m从小增加到最大。3。。然后m不变,n从大见到最小。4。。n不变,m从最大见到最小。再就是循环了,下一次的这种循环,n和m会分别减少1。即数变少了,但在代码中控制编写方原创 2017-03-26 18:16:02 · 844 阅读 · 0 评论 -
递归递推总结
递归是大问题转化为小问题,不断调用自身或不断间接调用的一类算法。1.。递归算法的关键是要找出大问题和小问题的联系----即递归定义。进而使大问题的规模不断减少,从而达到能解决的规模,最后解决这个问题。2.。递归算法的另一个关键点是递归终止条件,即使得这个递归调用结束的条件。有时,递归算法的效率会很低,这时候就可以用记忆化搜索,即建立一个标志数组为全局变量,用来记录每次递归得到的答案,这原创 2017-03-26 22:58:19 · 2673 阅读 · 0 评论 -
方块与收纳盒,,
链接:https://www.nowcoder.com/acm/contest/67/H来源:牛客网现在有一个大小n*1的收纳盒,我们手里有无数个大小为1*1和2*1的小方块,我们需要用这些方块填满收纳盒,请问我们有多少种不同的方法填满这个收纳盒 输入描述:第一行是样例数T第2到2+T-1行每行有一个整数n(n输出描述:对于每个样例输出对应的方法数#i原创 2018-01-21 20:33:58 · 278 阅读 · 0 评论 -
3637. 解密信件(递归回溯)
oxx 总是喜欢给 ultmaster 写信,由于某些原因,这些信的内容又不能被人看见。但传信的过程中,信中信息的泄露又不可避免,于是 oxx 发明了一种信内容信息的加密方式。ultmaster 拿到了 oxx 的加密程序:char letter[];void encrypt(l, r) { if (l < r) { reverse letter[l..r]...原创 2018-10-01 10:51:46 · 930 阅读 · 0 评论 -
递归递推之数值分解
题目大概:输入一个数,可以分解成很多数字相加组成,当分解的这些数乘积最大数,输出所有的分解数,分解个数,乘积。思路:分解为三乘积最大,但最后剩下4时不能分解,这个题用循环相减,看减掉的三与最后的数的乘积就可以了。感想:无。代码:#include using namespace std;int main(){int n;while(cin>>n){in原创 2017-03-25 17:50:34 · 438 阅读 · 0 评论 -
递归递推之马拦过河卒
题目大概:小卒子只能向左和下走,最后要走到(0,0)的位置,输入小卒子的位置和马的位置,小卒子不能走马的控制区域和马所在的位置。输出可走的路线条数。思路:可以用递归调用来做,但先想出联系的地方,可以从小卒子的位置开始走(a,s),可以有(a-1,s),(a,s-1)两种走法,并且每次都只有这两种走法,注意 只有走到点(0,0),才算一条路,但有九个地方不能走,即马所在地,和马控原创 2017-03-25 17:45:45 · 760 阅读 · 0 评论 -
递归递推之养兔子
题目大概:这个题目感觉和第一题 母牛的故事 好像,这个是一对雌雄兔子一天生一对雌雄兔子,一对小兔子一天后成熟,问n天后会有多少对兔子。思路:因为和我前几次发的博客 母牛的故事 类似,就简写思路,很显然,第n天的兔子对数等于前一天的兔子数 加 n-2天的兔子生的小兔子数。于是,递推公式就有了,a[n]=a[n-1]+a[n-2];但需要注意,这个题要求的书比较大,所以要原创 2017-03-19 20:42:17 · 556 阅读 · 0 评论 -
递归递推之母牛的故事
题目大概:开始有一头母牛, 每年年初母牛会生小母牛,小母牛第四年继续生小母牛。问第n年母牛总数。思路:用递推母牛总数包含小母牛和母牛,第一年是一头母牛,以后这头母牛每年都会生小母牛,到第五年的时候,就是第一个生的母牛能生小母牛的时候,故这一年母牛总数等于前一年算的母牛总数4加上新生母牛,最近的几年的小母牛不会生小母牛,只有第2年的小母牛能生小母牛,故原来的大母牛加上这个小母牛就是第2年原创 2017-03-19 20:22:57 · 1108 阅读 · 0 评论 -
递归递推之递归的函数
题目大概:编写一个递归函数,按题目要求求值。思路:按照题目要求把函数编写完成,只是需要加一个记忆化搜索。感想:当题目递归次数较多时,可以用记忆化搜索。代码:#include using namespace std;int z[30][30][30]={0};int f(int a,int b,int c){if(a0||b0||c0)return原创 2017-03-25 10:03:06 · 387 阅读 · 0 评论 -
递归递推之计算组合数
题目大概:按题目给出的公式求组合数。思路:用递归函数,递归求解组合数。感想:一般有公式的题大部分要用递归。代码:#include using namespace std;int f(int a,int b){if(b==0)return1;else {if(a==1)return1;else {if(a==b)return1;el原创 2017-03-25 10:08:41 · 1690 阅读 · 0 评论 -
递归递推之Fighting_小银考呀考不过四级
题目大概:一行有n个座位,每两个人之间至少空两个座位,求至少一个人的情况下的作为的做法。思路:a[n]为n个座位有的所有做法。假设前面的作为已经排好,第n个座位有两种情况,有人做和没人做,当有人做时,n-1和n-2一定没人做,所以和坐法和a[n-3]的数量时一样的,当没人坐时,那就和a[n-1]上的坐法是一样的,但还有一种情况,即当只有一个人坐时,a[n]上坐一人也算一种情况,故得出公原创 2017-03-25 10:23:08 · 249 阅读 · 0 评论 -
递归递推之蟠桃记
题目大概:每天吃一半加1个桃子,最后第n天还有一个桃子,问第一天有多少桃子。思路:很容易便写出递推状态和递推公式。a[n]为第n天的桃子数,a[n-1]=(a[n]+1)*2。感想:无。代码:#include using namespace std;int main(){ int n,a[30];while(cin>>n){if(n==0)br原创 2017-03-25 17:23:52 · 500 阅读 · 0 评论 -
递归递推之数学黑洞
题目大概:输入一个四位数,这个数的个个位数的数重新排列,最大的数减去最小的数,输出,知道变为6174. 输出输出的数的个个数。思路:按照想法,建一个函数,把个个位数分离,排序,相减,最后和6174比较,决定是继续调用这个函数重复操作,还是返回6174.感想:原来递推递归中也有想法题。代码:#include #include using namespace原创 2017-03-25 17:30:51 · 378 阅读 · 0 评论 -
递归递推之们--加强斐波那契
题目大概:题目已经给出递推公式,要求编写程序。思路:看着题目抄上公式,采用递归函数。感想:和不加强的没什么区别。........代码:#include using namespace std;int main(){int n,f[31]={0};for(int i=1;i30;i++){if(i3)f[i]=i;if(i>=4){f[i]=f[i-原创 2017-03-25 17:34:58 · 308 阅读 · 0 评论 -
HDU - 4826(dp)
度度熊是一只喜欢探险的熊,一次偶然落进了一个m*n矩阵的迷宫,该迷宫只能从矩阵左上角第一个方格开始走,只有走到右上角的第一个格子才算走出迷宫,每一次只能走一格,且只能向上向下向右走以前没有走过的格子,每一个格子中都有一些金币(或正或负,有可能遇到强盗拦路抢劫, 度度熊身上金币可以为负,需要给强盗写欠条),度度熊刚开始时身上金币数为0,问度度熊走出迷宫时候身上最多有多少金币? Input输入...原创 2019-01-18 20:11:52 · 119 阅读 · 0 评论