您的位置:首页 > 其它

递推递归练习--D(汉诺塔问题)

2017-03-30 21:15 218 查看
题目简述:n个盘子的汉诺塔问题的最少移动次数是2^n-1,即在移动过程中会产生2^n个系列。由于发生错移产生的系列就增加了,这种错误是放错了柱子,并不会把大盘放到小盘上。

解题思路:

纯找规律的题(对我来说是这样的)。这个题不是求需要多少步完成汉诺塔问题,是中间又多少系列。通过给出的输入输出找规律……(如图),找到是3的i次方。所以写出程序……算是比较水吧。

Sample Input

3
1
3
29


Sample Output

3
27
68630377364883


做题感想:就是比较水的一个题,感觉是这样。没找到规律强行A题……比较水但是过了。哈哈哈哈哈哈哈。不知道正规的解题思路,再继续考虑讨论一下吧。

源代码:

#include <iostream>
using namespace std;
int main()
{
long long int a[30];
a[1]=3;
for (int i=2;i<30;i++)
{
long long int b=1;
for (int j=0;j<i;j++)
b=b*3;
a[i]=b;
}
int m;
while (cin>>m)
{
int o,e;
for (o=0;o<m;o++)
{
cin>>e;
cout<<a[e]<<endl;
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: