Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Xay dung code bai toan 8 quan hau
- // Khai bao cac ham thu vien neu co
- #include <iomanip>
- #include <iostream>
- #include <malloc.h>
- #include <memory.h>
- using namespace std;
- //
- int j;
- #define RANK 8
- //kiem tra quan hau
- void queens_checker(int** queens, int rank, int current)
- {
- int order = 0;
- int i, j;
- int s1 = 0, s2 = 0, s3 = 0, s4 = 0; int k;
- if (current == rank)
- {
- cout << " Cach " << ++order << endl << endl;
- for (i = 0; i < rank; i++)
- {
- for (j = 0; j < rank; j++)
- cout << setw(3) << queens[i][j];
- cout << endl << endl;
- }
- cout << endl;
- return;
- }
- for (j = 0; j < rank; j++)
- {
- s1 = 0; s2 = 0; s3 = 0; s4 = 0;
- if (!queens[current][j])
- {
- queens[current][j] = 1;
- for (i = 0; i < rank; i++) //tính t?ng c?t hàng
- {
- s1 += queens[current][i];
- s2 += queens[i][j];
- } k = 1;
- s3 = queens[current][j];
- while ((current + k) < rank && (j + k) < rank)
- {
- s3 += queens[current + k][j + k];
- ++k;
- } k = -1;
- while ((current + k) >= 0 && (j + k) >= 0)
- {
- s3 += queens[current + k][j + k];
- --k;
- } k = 1;
- s4 = queens[current][j];
- while ((current + k) < rank && (j - k) >= 0)
- {
- s4 += queens[current + k][j - k];
- ++k;
- } k = -1;
- while ((current + k) >= 0 && (j - k) < rank)
- {
- s4 += queens[current + k][j - k];
- --k;
- }
- if ((s1 < 2) && (s2 < 2) && (s3 < 2) && (s4 < 2)) // tinh chat co vua
- queens_checker(queens, rank, current + 1);
- queens[current][j] = 0;
- }
- }
- }
- // chuong trinh chinh
- int main()
- {
- int** queens; int i; int rank = RANK;
- queens = (int **)malloc(rank * sizeof(int *));
- for (i = 0; i < rank; i++)
- {
- queens[i] = (int *)malloc(rank * sizeof(int));
- memset(queens[i], 0, rank * sizeof(int));
- }
- queens_checker(queens, rank, 0);
- for (i = 0; i < rank; i++)
- free(queens[i]);
- free(queens);
- return 0;
- }
- // Nhan Ctrl + F7 de bien dich chuong trinh
- // Nhan Ctrl + F5 de chay chuong trinh
- // Chung ta se co 12 cach de giai bai toan
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement