递归算法虽然容易理解,但我们可能时常忘记使用它。我就只记得算法课上老师讲过的场景:斐波那契数列,汉诺塔这两个例子。偶尔看到b站上一个C语言视频里面用递归求解进制转换的例子,突然之间恍然大悟,想着记录下来。 下面是一个求解二进制的程序代码 ...
分类:
其他好文 时间:
2019-01-26 23:48:50
阅读次数:
305
题目大意:给定一个四个柱子的汉诺塔,N 个盘子,求最少多少步移动到另一个柱子上。 题解:$f[n]=min(2 f[i]+d[n i])$,其中 $d[i]$ 为汉诺三塔最小移动次数。M 塔同理。 代码如下 cpp include using namespace std; const int max ...
分类:
其他好文 时间:
2019-01-21 20:08:02
阅读次数:
159
递归有两个重要的特点: 调用自身 必须要有结束条件 一个著名的汉诺拇问题 ...
分类:
其他好文 时间:
2019-01-15 19:35:56
阅读次数:
88
import sys def hanoi(n, a, b, c): if n == 1: print('%c --> %c' % (a, c)) else: hanoi(n-1, a, c, b) print('%c --> %c' % (a, c)) hanoi(n-1, b, a, c) if ... ...
分类:
其他好文 时间:
2019-01-13 01:47:26
阅读次数:
187
汉诺塔问题:有三根相邻的柱子,标号为A,B,C,A柱子上从下到上按金字塔状叠放着n个不同大小的圆盘,要把所有盘子一个一个移动到柱子B上,并且每次移动同一根柱子上都不能出现大盘子在小盘子上方,求至少需要多少次移动。 我们首先假设n=1,那么move(n)=1,因为这时候只需要从A->C便可以。接下来假 ...
分类:
其他好文 时间:
2019-01-11 20:09:41
阅读次数:
161
#include<stdio.h>int main(){ void hanoi(int n,char one,char two,char three); int m; printf("Inout the numbers of disks:"); scanf("%d",&m); printf("The ...
分类:
其他好文 时间:
2019-01-08 19:20:59
阅读次数:
202
#兔子问题用递归法解决 def factorial(n): if n0: n3=n2+n1 n1=n2 n2=n3 n-=1 return n3 result=fab(40) if result !=-1: print("总共有%d对小兔子" %result) #汉诺塔解决方法 def hanor(... ...
分类:
其他好文 时间:
2019-01-08 19:14:20
阅读次数:
227
https://www.luogu.org/team/show?teamid=2961 由普通汉诺塔问题,设数量为n时移动次数为a[n],则a[n]=a[n-1]+1+a[n-1]=2*a[n-1]+1. // 因为a[1]=1,所以a[n]=2^n-1.(找规律?) 故双塔就是2*(2^n-1). ...
分类:
其他好文 时间:
2019-01-05 19:48:22
阅读次数:
161
案例一:汉诺塔 例一: 例二: 案例二:求阶乘 例一: 例二: 案例三:利用递归将输入的字符串反向输出 ...
分类:
编程语言 时间:
2019-01-02 21:39:32
阅读次数:
200
2019你好!好好生活,好好工作! 1、二分查找法 基本思路:获取数组的中间值,将数组分割成两份,利用中间值跟指定的值进行比较,如果中间值大于指定的值,就在数组的左边进行查找;如果中间值小于指定值,就在数组的右边进行查找。如此循环的执行下去,最终找到符合的值。 优点: 1.速度快 2.比较次数少 3 ...
分类:
编程语言 时间:
2019-01-01 21:44:12
阅读次数:
244