islam2366

N-Queen

Apr 22nd, 2019
47
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.99 KB | None | 0 0
  1. #include <stdio.h>
  2. int N;
  3. int Chess[11][11];
  4. void print()
  5. {
  6. int i, j;
  7. for (i = 0; i < N; i++) {
  8. for (j = 0; j < N; j++)
  9. printf("%d ", Chess[i][j]);
  10. printf("\n");
  11. }
  12. }
  13. int check(int i, int j)
  14. {
  15. int k;
  16. // check same column
  17. for (k = 0; k < i; k++) {
  18. if (1 == Chess[k][j])
  19. return 0;
  20. }
  21. // check left diagonal
  22. for (k = 1; i - k >= 0 && j - k >= 0; k++) {
  23. if (1 == Chess[i - k][j - k])
  24. return 0;
  25. }
  26. // check right diagonal
  27. for (k = 1; i - k >= 0 && j + k < N; k++) {
  28. if (1 == Chess[i - k][j + k])
  29. return 0;
  30. }
  31. return 1;
  32. }
  33. int solve(int i)
  34. {
  35. if (i == N) {
  36. print();
  37. return 1;
  38. }
  39. for (int j = 0; j < N; j++) {
  40. if (1 == check(i, j)) {
  41. Chess[i][j] = 1;
  42. if (1 == solve(i + 1))
  43. return 1;
  44. Chess[i][j] = 0;
  45. }
  46. }
  47. return 0;
  48. }
  49. int main()
  50. {
  51. int i, j;
  52. scanf("%d", &N);
  53. for (i = 0; i < N; i++) {
  54. for (j = 0; j < N; j++) {
  55. Chess[i][j] = 0;
  56. }
  57. }
  58. if (0 == solve(0))
  59. printf("Not possible\n");
  60. return 0;
  61. }
Add Comment
Please, Sign In to add comment