解答C++作业02

王朝c/c++·作者佚名  2006-01-09
宽屏版  字体: |||超大  

//harry zou

#include<iostream>

#include<string>

#include<conio.h>

#include<iomanip>

using namespace std;

int i=0;char ch;const int w=8;

int count=0;

int map[w][w];

bool move(int x,int y)

{

i++;

map[x][y]=i;

count++;

if (i==w*w) return true;

//1

if(x-2>=0&&y+1<w)

{

if(map[x-2][y+1]==0)

{

if(move(x-2,y+1))

return true;

}

}

//2

if(x-1>=0&&y+2<w)

{

if(map[x-1][y+2]==0)

{

if(move(x-1,y+2))

return true;

}

}

//3

if(x+1<w&&y+2<w)

{

if(map[x+1][y+2]==0)

{

if(move(x+1,y+2))

return true;

}

}

//4

if(x+2<w&&y+1<w)

{

if(map[x+2][y+1]==0)

{

if(move(x+2,y+1))

return true;

}

}

//5

if(x+2<w&&y-1>=0)

{

if(map[x+2][y-1]==0)

{

if(move(x+2,y-1))

return true;

}

}

//7

if(x-1>=0&&y-2>=0)

{

if(map[x-1][y-2]==0)

{

if(move(x-1,y-2))

return true;

}

}

//6

if(x+1<w&&y-2>=0)

{

if(map[x+1][y-2]==0)

{

if(move(x+1,y-2))

return true;

}

}

//8

if(x-2>=0&&y-1>=0)

{

if(map[x-2][y-1]==0)

{

if(move(x-2,y-1))

return true;

}

}

map[x][y]=0;

i--;

return false;

}

int main()

{

int j,k;

for(k=0;k<=w-1;k++)

for(j=0;j<=w-1;j++)

map[k][j]=0;

for(k=0;k<=w-1;k++)

{

for(j=0;j<=w-1;j++)

cout<<map[k][j];

cout<<endl;

}

if(move(0,0))

{

for(k=0;k<=w-1;k++)

{

for(j=0;j<=w-1;j++)

cout<<setw(3)<<map[k][j];

cout<<endl;}

}

else

cout<<"sorry"<<endl;

cout<<count<<endl;

return 0;

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有