看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) dev c++ 問題(Question): 如下圖,執行到(5)後就不會再移動了,不知道問題出在哪? 1 2 => 2 => => 1 => 1 3 3 1 321 32 23 === === === === === (1) (2) (3) (4) (5) 程式碼(Code):(請善用置底文網頁, 記得排版) #include<iostream> #include<iomanip> using namespace std; int n=3,mid,height[3]={3,0,0},s[3][3],nnum=n; void honai(int start,int end,int num) //從start搬到end,共搬num個 { if(num>1) { if(start+end==1){mid=2;} else if(start+end==2){mid=1;} else if(start+end==3){mid=0;} nnum=num; num--; honai(start,mid,num); honai(start,end,nnum-num); honai(mid,end,num); } else { height[end]++; s[n-height[end]][end]=s[n-height[start]][start]; s[n-height[start]][start]=0; height[start]--; for(int i=0;i<n;i++) { for(int j=0;j<n;j++) { (s[i][j]==0?(cout <<"|"):(cout << s[i][j])); } cout << endl; } cout << "===" << endl << endl; } } int main() { int i; for(i=0;i<n;i++) { s[i][0]=i+1; } for(int i=0;i<n;i++) { for(int j=0;j<n;j++) { (s[i][j]==0?(cout <<"|"):(cout << s[i][j])); } cout << endl; } cout << "---" << endl << "---" << endl << endl; honai(0,2,n); return 0; } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 219.84.0.208
firejox:.... 07/23 15:09
firejox:let nnum declared in honai... 07/23 15:20
firejox:n-height[]... 07/23 15:26
firejox:ignore the least one 07/23 15:29
搞定了 把mid定義在函數內就好了 ※ 編輯: q0300768 來自: 219.84.0.208 (07/23 15:42)
firejox:the mid is useless.just try (start+end)^3 ... 07/23 15:50
firejox:or 3-(start+end) ... 07/23 15:50
感謝!! 沒注意到可省略! ※ 編輯: q0300768 來自: 219.84.0.208 (07/23 15:53)
Favonia:要小心n不一定會比nnum先初始化,寫在最外面會很麻煩。 07/23 19:45
Favonia:請直接寫nnum=3或是在其他函式裡面寫nnum=n 07/23 19:45
Favonia:(啊對不起我上面是在說 C 不是 C++, 請忽略 orz) 07/23 20:01
Favonia:如果是 C++, 目前程式是安全的,但還是建議不要這樣寫 :P 07/23 20:03
Favonia:C++ 規則有一點多,要講清楚有點麻煩 orz 07/23 20:04