/* *問題描述:有三根桿子A,B,C。A桿上有N個(N>1)穿孔圓盤,盤的尺寸由下到上依次變小。 * 要求按下列規則將所有圓盤移至C桿:提示:可將圓盤臨時置于B桿,也可將從A桿 * 移出的圓盤重新移回A桿,但都必須尊循上述兩條規則。問:如何移?最少要移動多少次? */ #include<iostream> using namespace std; void Hanoi(int n,char src,char mid,char dest) {//將src座上的n個盤子以mid為中轉,移動到dest座 if( n == 1) {//只需要移動一個盤子 cout <<src <<"->"<<dest<<endl;//直接將盤子從src移動到dest即可 return ;//遞歸終止 } Hanoi(n-1,src,dest,mid);//先將n-1個盤子從src以dest為中轉移動到dest cout<<src <<"->"<<dest<<endl;//再將一個盤子從src移動到dest Hanoi(n-1,mid,src,dest);//最后將n-1個盤子從mid以src為中轉移到dest即可 return ; } int main() { int n; cout<<"輸入要移動的盤子的個數:"<<endl; cin>>n; Hanoi(n,'A','B','C'); return 0; }運行結果:

|
新聞熱點
疑難解答