Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- int N;
- int Chess[11][11];
- void print()
- {
- int i, j;
- for (i = 0; i < N; i++) {
- for (j = 0; j < N; j++)
- printf("%d ", Chess[i][j]);
- printf("\n");
- }
- }
- int check(int i, int j)
- {
- int k;
- // check same column
- for (k = 0; k < i; k++) {
- if (1 == Chess[k][j])
- return 0;
- }
- // check left diagonal
- for (k = 1; i - k >= 0 && j - k >= 0; k++) {
- if (1 == Chess[i - k][j - k])
- return 0;
- }
- // check right diagonal
- for (k = 1; i - k >= 0 && j + k < N; k++) {
- if (1 == Chess[i - k][j + k])
- return 0;
- }
- return 1;
- }
- int solve(int i)
- {
- if (i == N) {
- print();
- return 1;
- }
- for (int j = 0; j < N; j++) {
- if (1 == check(i, j)) {
- Chess[i][j] = 1;
- if (1 == solve(i + 1))
- return 1;
- Chess[i][j] = 0;
- }
- }
- return 0;
- }
- int main()
- {
- int i, j;
- scanf("%d", &N);
- for (i = 0; i < N; i++) {
- for (j = 0; j < N; j++) {
- Chess[i][j] = 0;
- }
- }
- if (0 == solve(0))
- printf("Not possible\n");
- return 0;
- }
Add Comment
Please, Sign In to add comment