當前位置:編程學習大全網 - 編程軟體 - 實用c編程大全

實用c編程大全

算法思想

對於漢諾塔問題,當只移動壹個圓盤時,圓盤直接從A針移動到C針..如果移動的磁盤是n(n & gt;1),分為幾個步驟:將(n-1)個碟片從A針移動到B針(借助C針);織針A上的最後壹個圓盤移動到織針C;(n-1)B針上的圓盤被移動到C針上(在A針的幫助下)。每做壹次,動盤就少壹個,逐漸減少。最後,當n為1時,整個移動過程完成。

因此,可以設計壹個遞歸函數來求解漢諾塔問題,圓盤的整個移動過程都可以通過遞歸來實現。解決問題的過程是對實際操作的模擬。

程序代碼

# include & ltstdio.h & gt

int main()

{

int hanoi(int,char,char,char);

int n,counter

printf("輸入磁盤數量:");

scanf("%d ",& ampn);

printf(" \ n ");

counter=hanoi(n,' A ',' B ',' C ');

返回0;

}

int hanoi(int n,char x,char y,char z)

{

int move(char,int,char);

如果(n==1)

move(x,1,z);

其他

{

河內(n-1,x,z,y);

移動(x,n,z);

河內(n-1,y,x,z);

}

返回0;

}

int move(char getone,int n,char putone)

{

靜態int k = 1;

printf("%2d:%3d # %c - %c\n ",k,n,getone,putone);

如果(k++%3==0)

printf(" \ n ");

返回0;

}

  • 上一篇:vc 怎麽寫dll 200分
  • 下一篇:機械專業轉行IT行業需要做哪些準備?
  • copyright 2024編程學習大全網