您的位置:首页 > 其它

关于汉诺塔的一点理解

2017-03-03 11:09 239 查看
以NEFU 200 为例

题意:

中文NEFU 200

思路:

利用递归的思想解决很好懂

还有更好懂的类似于递推的思想:av7398130 和  av7539453

递归代码:

过程代码:

#include <iostream>

using namespace std;
long long steps,i=0;
int move(int x)
{
i=!i;
steps+=2;
if(i)
{
cout<<"move 1 from A to B"<<endl;
cout<<"move 1 from B to C"<<endl;
}
else
{
cout<<"move 1 from C to B"<<endl;
cout<<"move 1 from B to A"<<endl;
}
}
int mission(int x,char a,char b,char c)
{
if(x==1)
move(1);
else
{
mission(x-1,a,b,c);
steps++;
cout<<"move "<<x<<" from "<<a<<" to "<<b<<endl;
mission(x-1,c,b,a);
steps++;
cout<<"move "<<x<<" from "<<b<<" to "<<c<<endl;
mission(x-1,a,b,c);
}
}
int main()
{
int n;
while(cin>>n)
{
steps=0;
mission(n,'A','B','C');
cout<<"Total steps are "<<steps<<endl;
}
}


计步代码:

#include <iostream>

using namespace std;

int main()
{
int n;
long long sum;
while(cin>>n)
{
sum=2;
for(int i=1;i<n;i++)
sum=sum*3+2;
cout<<sum<<endl;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: