关于骑士旅行的问题(C++大学教程第4章练习),用递归要怎么实现?(100分)

  • 主题发起人 主题发起人 DD88
  • 开始时间 开始时间
D

DD88

Unregistered / Unconfirmed
GUEST, unregistred user!
我知道这里是讨论Delphi的场所,不应该提出关于C/C++的问题,但是是在没有办法--不知道错在那里。
希望那位懂C++的高手能指点一二!不胜感激!!!
下面是我的代码,应该是逻辑错误,但是我找不到原因:#include <iostream.h>
struct Direction{ //定义方向坐标
int x;
int y;
};
int a[8][8], i_Counter=0;
void test( int array[8][8], int, int);
int main()
{
int x, y;
for(int j=0;
j<8;
j++){
for (int k=0;
j<8;
j++){
a[j][k]=0;
}
}
cout<<"Input X and Y:";
cin>>x>>y;
cout<<endl;
test(a,x,y);
cin>>y;
return 0;
}
void test(int array[8][8], int i_CurrentX, int i_CurrentY )
{
Direction D[8]={{2,1},{1,2},{-1,2},{-2,1},{-2,-1},{-1,-2},{1,-2},{2,-1}};
int i_DesX=0, i_DesY=0;
array[i_CurrentX][i_CurrentY]=1;
for (int i=0;
i<8;
i++){ //8个方向
//是否走出棋盘
i_DesX=i_CurrentX+D.x;
i_DesY=i_CurrentY+D.y;
if ((i_DesX>=0)&amp;&amp;(i_DesX<8)&amp;&amp;(i_DesY>=0)&amp;&amp;(i_DesY<8)){
//该格是否已经走过
if (array[i_DesX][i_DesY]==0){
array[i_DesX][i_DesY]=1;
i_CurrentX=i_DesX;
i_CurrentY=i_DesY;
test(array,i_CurrentX,i_CurrentY);
i_Counter++;
cout<<i_Counter<<"move to:"<<i_DesX<<" "<<i_DesY<<" ";
if (i_Counter%3==0)
cout<<endl;
if (i_Counter==63)
cout<<"/nThe End!";
}
}
}
}

 
在这里提出C/C++的问题倒好像没有什么不对的,但是好像你不应该贴到MIDAS / DCOM里面来。[:D]
我不会,帮你提一提。[8D]
 
后退
顶部