Advertisement
nguyenhappy92

8 quân hậu.

Nov 1st, 2015
343
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.95 KB | None | 0 0
  1. // Xay dung code bai toan 8 quan hau
  2. // Khai bao cac ham thu vien neu co
  3. #include <iomanip>
  4. #include <iostream>
  5. #include <malloc.h>
  6. #include <memory.h>
  7. using namespace std;
  8. //
  9. int j;
  10. #define RANK 8
  11. //kiem tra quan hau
  12. void queens_checker(int** queens, int rank, int current)
  13. {
  14. int order = 0;
  15. int i, j;
  16. int s1 = 0, s2 = 0, s3 = 0, s4 = 0; int k;
  17. if (current == rank)
  18. {
  19. cout << " Cach " << ++order << endl << endl;
  20. for (i = 0; i < rank; i++)
  21. {
  22. for (j = 0; j < rank; j++)
  23. cout << setw(3) << queens[i][j];
  24. cout << endl << endl;
  25. }
  26. cout << endl;
  27. return;
  28. }
  29. for (j = 0; j < rank; j++)
  30. {
  31. s1 = 0; s2 = 0; s3 = 0; s4 = 0;
  32. if (!queens[current][j])
  33. {
  34. queens[current][j] = 1;
  35. for (i = 0; i < rank; i++) //tính t?ng c?t hàng
  36. {
  37. s1 += queens[current][i];
  38. s2 += queens[i][j];
  39. } k = 1;
  40. s3 = queens[current][j];
  41. while ((current + k) < rank && (j + k) < rank)
  42. {
  43. s3 += queens[current + k][j + k];
  44. ++k;
  45. } k = -1;
  46. while ((current + k) >= 0 && (j + k) >= 0)
  47. {
  48. s3 += queens[current + k][j + k];
  49. --k;
  50. } k = 1;
  51. s4 = queens[current][j];
  52. while ((current + k) < rank && (j - k) >= 0)
  53. {
  54. s4 += queens[current + k][j - k];
  55. ++k;
  56. } k = -1;
  57. while ((current + k) >= 0 && (j - k) < rank)
  58. {
  59. s4 += queens[current + k][j - k];
  60. --k;
  61. }
  62. if ((s1 < 2) && (s2 < 2) && (s3 < 2) && (s4 < 2)) // tinh chat co vua
  63. queens_checker(queens, rank, current + 1);
  64. queens[current][j] = 0;
  65. }
  66. }
  67. }
  68. // chuong trinh chinh
  69. int main()
  70. {
  71. int** queens; int i; int rank = RANK;
  72. queens = (int **)malloc(rank * sizeof(int *));
  73. for (i = 0; i < rank; i++)
  74. {
  75. queens[i] = (int *)malloc(rank * sizeof(int));
  76. memset(queens[i], 0, rank * sizeof(int));
  77. }
  78. queens_checker(queens, rank, 0);
  79. for (i = 0; i < rank; i++)
  80.  
  81. free(queens[i]);
  82. free(queens);
  83.  
  84. return 0;
  85. }
  86. // Nhan Ctrl + F7 de bien dich chuong trinh
  87. // Nhan Ctrl + F5 de chay chuong trinh
  88. // Chung ta se co 12 cach de giai bai toan
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement