[問題] 河內塔問題
開發平台(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
→
07/23 15:09, , 1F
07/23 15:09, 1F
→
07/23 15:20, , 2F
07/23 15:20, 2F
→
07/23 15:26, , 3F
07/23 15:26, 3F
→
07/23 15:29, , 4F
07/23 15:29, 4F
搞定了 把mid定義在函數內就好了
※ 編輯: q0300768 來自: 219.84.0.208 (07/23 15:42)
→
07/23 15:50, , 5F
07/23 15:50, 5F
→
07/23 15:50, , 6F
07/23 15:50, 6F
感謝!! 沒注意到可省略!
※ 編輯: q0300768 來自: 219.84.0.208 (07/23 15:53)
→
07/23 19:45, , 7F
07/23 19:45, 7F
→
07/23 19:45, , 8F
07/23 19:45, 8F
→
07/23 20:01, , 9F
07/23 20:01, 9F
→
07/23 20:03, , 10F
07/23 20:03, 10F
→
07/23 20:04, , 11F
07/23 20:04, 11F
討論串 (同標題文章)