this program is tour of knight on 64 square of chess board
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 | /******************************************************* * MYCPLUS Sample Code - https://www.mycplus.com * * * * This code is made available as a service to our * * visitors and is provided strictly for the * * purpose of illustration. * * * * Please direct all inquiries to saqib at mycplus.com * *******************************************************/ /******************** By : Farshad Mojtabai *******************/ #include<iostream.h> #include<iomanip.h> #include<conio.h> //using namespace std; void possible(); void exits(int); const int ver[]={-1,-2,-2,-1,1,2,2,1}, hor[]={2,1,-1,-2,-2,-1,1,2}; int row,col,npos; int board[8][8],nextij[8][8][8],accessible[8][8]; int main() { int count = 1,k,j; cout <<"position [from (0,0) to (7,7)]:"; cin >>row >>col; cout << endl; board[row][col]=count; while(count!=64) { count++; possible(); exits(count); /*for(j=0;j<=7;j++) { for(k=0;k<=7;k++) cout << setw(3) << accessible[j][k]; cout <<"\t"; for(k=0;k<=7;k++) cout << setw(3) << board[j][k]; cout <<"\n\n"; } cout <<"\n\n"; */ } for(j=0;j<=7;j++) { for(k=0;k<=7;k++) cout << setw(3) << board[j][k]; cout <<"\n\n"; } getch(); return 0; } void possible() { int npos; for(int r=0;r<=7;r++) { for(int c=0;c<=7;c++) { npos = 0; for(int i=0;i<=7;i++) { if(((r+ver[i] >=0) && (r+ver[i] <=7))&&((c+hor[i] >=0) && (c+hor[i] <=7))&&(board[r+ver[i]][c+hor[i]] == 0)) { nextij[r][c][npos] = i; npos++; } } accessible[r][c] = npos; } } } void exits(int l) { int min = accessible[row+ver[nextij[row][col][0]]][col+hor[nextij[row][col][0]]]; int r = row+ver[nextij[row][col][0]],c=col+hor[nextij[row][col][0]]; for(int i=1;i < accessible[row][col];i++) if(min >= accessible[row+ver[nextij[row][col][i]]][col+hor[nextij[row][col][i]]]) { min =accessible[row+ver[nextij[row][col][i]]][col+hor[nextij[row][col][i]]]; r = row + ver[nextij[row][col][i]]; c = col + hor[nextij[row][col][i]]; } //cout <<"\n min ="<<min <<" ("<<r<<','<<c<<") \n"; board[r][c]=l; row = r; col = c; } |