Advertisement
Guest User

Nqueen

a guest
Dec 1st, 2015
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.33 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<math.h>
  3.  
  4. int board[20],count;
  5.  
  6. int main()
  7. {
  8. int n,i,j;
  9. void queen(int row,int n);
  10.  
  11. printf(" - N Queens Problem Using Backtracking -");
  12. printf("\n\nEnter number of Queens:");
  13. scanf("%d",&n);
  14. queen(1,n);
  15. return 0;
  16. }
  17.  
  18. //function for printing the solution
  19. void print(int n)
  20. {
  21. int i,j;
  22. printf("\n\nSolution %d:\n\n",++count);
  23.  
  24. for(i=1;i<=n;++i)
  25. printf("\t%d",i);
  26.  
  27. for(i=1;i<=n;++i)
  28. {
  29. printf("\n\n%d",i);
  30. for(j=1;j<=n;++j) //for nxn board
  31. {
  32. if(board[i]==j)
  33. printf("\tQ"); //queen at i,j position
  34. else
  35. printf("\t-"); //empty slot
  36. }
  37. }
  38. }
  39.  
  40. /*funtion to check conflicts
  41. If no conflict for desired postion returns 1 otherwise returns 0*/
  42. int place(int row,int column)
  43. {
  44. int i;
  45. for(i=1;i<=row-1;++i)
  46. {
  47. //checking column and digonal conflicts
  48. if(board[i]==column)
  49. return 0;
  50. else
  51. if(abs(board[i]-column)==abs(i-row))
  52. return 0;
  53. }
  54.  
  55. return 1; //no conflicts
  56. }
  57.  
  58. //function to check for proper positioning of queen
  59. void queen(int row,int n)
  60. {
  61. int column;
  62. for(column=1;column<=n;++column)
  63. {
  64. if(place(row,column))
  65. {
  66. board[row]=column; //no conflicts so place queen
  67. if(row==n) //dead end
  68. print(n); //printing the board configuration
  69. else //try queen with next position
  70. queen(row+1,n);
  71. }
  72. }
  73. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement