Advertisement
Guest User

Untitled

a guest
Oct 20th, 2014
224
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.69 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. typedef struct offsets{
  6. short int horiz;
  7. short int vert;
  8. }offsets ;
  9. offsets move[8]={{1,-2},{2,-1},{2,1},{1,2},{-1,2},{-2,1},{-2,-1},{-1,-2}};
  10.  
  11. int length,basic_col=0,basic_row=0,token=0;
  12. void set_basic(){
  13. int ok=0;
  14. printf("Please set length side of a square:");
  15. scanf("%d",&length);
  16. printf("Please set a beginning:");
  17. do{
  18. if(ok) printf("Out of range,please enter again!!!\n");
  19. scanf("%d",&basic_col);
  20. scanf("%d",&basic_row);
  21. ok=1;
  22. }while(basic_col<0 || basic_col>=length ||basic_row<0||basic_row>=length);
  23. }
  24.  
  25. int chess[100][100]={0};
  26.  
  27. void printBoard() {
  28. int col,row;
  29. for(row=0;row<length;row++) {
  30. for(col=0;col<length;col++) {
  31. printf("%3d ", chess[row][col]);
  32. }
  33. puts("");
  34. }
  35. }
  36.  
  37. void path(int row,int col,int step){
  38. int nextcol,nextrow,dir;
  39. if (step == (length * length )&&!chess[row][col]&& !token++) {
  40. chess[row][col] = step;
  41. printf( "FOUND!\n");
  42. printBoard();
  43. printf( "=============================\n" );
  44. chess[row][col] = 0;
  45. }
  46. if (token) return;
  47. if (!chess[row][col]&&step !=25) {
  48. chess[row][col] = step;
  49. for(dir=0;dir<8;dir++){
  50. nextcol = col + move[dir].horiz;
  51. nextrow = row + move[dir].vert;
  52. if (nextrow < length && nextrow > -1 &&nextcol < length && nextcol > -1) {
  53. path(nextrow, nextcol, step + 1);
  54. }
  55. }
  56. chess[row][col] = 0;
  57.  
  58. }
  59. }
  60.  
  61. main(){
  62. set_basic();
  63. path(basic_row,basic_col,1);
  64. system("pause");
  65. return 0;
  66. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement