双层汉诺塔

来源:互联网 发布:德迅网络 编辑:程序博客网 时间:2024/04/30 02:24
#include<iostream>#include<cmath>#include<iomanip>#include<cstdlib>#include<ctime>using namespace std;void yd(int ,char,char,char );void ydd(int,char,char,char);int main(){    int n,t;    cin>>t;    for(int m=1;m<=t;++m)    {        int n;        cin>>n;        cout<<"Case #"<<m<<":"<<endl;        ydd(n,'A','B','C');    }}void yd(int n,char a,char b,char c){    if(n==1)    {        cout<<"Move from "<<a<<" to "<<c<<endl;        cout<<"Move from "<<a<<" to "<<c<<endl;    }    else    {        yd(n-1,a,c,b);        cout<<"Move from "<<a<<" to "<<c<<endl;        cout<<"Move from "<<a<<" to "<<c<<endl;        yd(n-1,b,a,c);    }}void ydd(int i,char a,char b,char c){    for(int n=i/2;n>1;--n)    {        yd(n-1,a,b,c);        cout<<"Move from "<<a<<" to "<<b<<endl;        cout<<"Move from "<<a<<" to "<<b<<endl;        yd(n-1,c,b,a);        cout<<"Move from "<<b<<" to "<<c<<endl;    }    cout<<"Move from "<<a<<" to "<<b<<endl;    cout<<"Move from "<<a<<" to "<<c<<endl;}

Sample Input

224

Sample Output

Case #1:Move from A to BMove from A to CCase #2:Move from A to CMove from A to CMove from A to BMove from A to BMove from C to AMove from C to AMove from B to CMove from A to BMove from A to C


原创粉丝点击