//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; }

|