简单php企业网站源码,服务器安全狗,wordpress vue,平面设计培训班学费一般要多少钱Hanoi双塔问题 题目描述 给定A,B,C三根足够长的细柱#xff0c;在A柱上放有2n个中间有空的圆盘#xff0c;共有n个不同的尺寸#xff0c;每个尺寸都有两个相同的圆盘#xff0c;注意这两个圆盘是不加区分的(下图为n3的情形#xff09;。现要将 这些国盘移到C柱上#xff…Hanoi双塔问题 题目描述 给定A,B,C三根足够长的细柱在A柱上放有2n个中间有空的圆盘共有n个不同的尺寸每个尺寸都有两个相同的圆盘注意这两个圆盘是不加区分的(下图为n3的情形。现要将 这些国盘移到C柱上在移动过程中可放在B柱上暂存。要求: (1)每次只能移动一个圆盘 (2) A、B、C三根细柱上的圆盘都要保持上小下大的顺序 任务:设An为2n个圆盘完成上述任务所需的最少移动次数对于输入的n输出An。 输入 输入文件hanoi.in为一个正整数n表示在A柱上放有2n个圆盘。 输出 输出文件hanoi.out仅一行包含一个正整数为完成上述任务所需的最少移动次数An。 样例输入 1样例输出 2提示 对于50%的数据 1n25 对于100% 数据 1n200 设法建立An与An-1的递推关系式。 1 #includebits/stdc.h2 using namespace std;3 int f[1000],n;4 void Hanoi()5 {6 int i;7 for(i1;if[0];i) f[i]*2; //按位乘28 f[1]2;9 for(int i1;if[0];i) //处理进位
10 {
11 f[i1]f[i]/10;
12 f[i]%10;
13 }
14 if(f[f[0]1]!0) f[0]; //确定位数
15 }
16 int main()
17 {
18 cinn;
19 memset(f,0,sizeof(f));
20 f[0]1;f[1]2;
21 for(int i2;in;i)
22 {
23 Hanoi();
24 }
25 for(int if[0];i1;i--)
26 coutf[i];
27 coutendl;
28 return 0;
29 } View Code 转载于:https://www.cnblogs.com/qing123tian/p/11107540.html