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;
}