题目简述:n个盘子的汉诺塔问题的最少移动次数是2^n-1,即在移动过程中会产生2^n个系列。由于发生错移产生的系列就增加了,这种错误是放错了柱子,并不会把大盘放到小盘上。
解题思路:
纯找规律的题(对我来说是这样的)。这个题不是求需要多少步完成汉诺塔问题,是中间又多少系列。通过给出的输入输出找规律……(如图),找到是3的i次方。所以写出程序……算是比较水吧。
Sample Input
3 1 3 29
Sample Output
3 27 68630377364883
源代码:
#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;
}