编程汉诺塔
发布时间: 2023-10-10 08:48:52
❶ 编程解决汉诺塔问题
1个盘子移动1次.
2个盘子移动3次.
3个盘子移动7次......
所以移动次数就是2^版n-1.
时间复杂度就是o(2^n);
具体代码如下:
#include<iostream>
using
namespace
std;
int
n=0;
void
hanoi(
int
n,
char
a,
char
b,
char
c)
{
if(n==1)
{
cout<<"第权"<<++n<<"步"<<":
移动第"<<n<<"个盘子从"<<a<<"到"<<c<<endl;
}
else
{
hanoi(n-1,a,c,b);
cout<<"第"<<++n<<"步"<<":
移动第"<<n<<"个盘子从"<<a<<"到"<<c<<endl;
hanoi(n-1,b,a,c);
}
}
int
main()
{
int
n;
cout<<"请输入数字n以解决n阶汉诺塔问题:";
cin>>n;
hanoi(n,'a','b','c');
cout<<"\n共需
"<<n<<"次移动盘子!"<<endl;
return
0;
}
❷ C语言编程(汉诺塔问题)
汉诺塔问题可以这样递归的理解:
把x柱上的前n-1个圆盘借助z柱移到y柱上;
把x柱上的最底下圆盘移到z柱上;
把y柱上的n-1个圆盘借助x柱移到z柱上;
你看你问的三句就是这个意思。