版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhou_pp/article/details/85161763
Description
汉诺塔问题中限制不能将一层塔直接从最左侧移动到最右侧,也不能直接从最右侧移动到最左侧,而是必须经过中间。求当有N层塔的时候移动步数。
Input
输入的第一行为N。
Output
移动步数。
Sample Input 1
2
Sample Output 1
8
#include<iostream>
using namespace std;
int count=0;
int Hanoi(int n,char src,char mid,char dest)
{
if( n == 1)
{
count+=2;
return count;
}
Hanoi(n-1,src,mid,dest);
count+=1;
Hanoi(n-1,dest,mid,src);
count+=1;
Hanoi(n-1,src,mid,dest);
return count;
}
int main()
{
int n;
cin>>n;
int s=Hanoi(n,'A','B','C');
cout<<s<<endl;
return 0;
}