the_eight_queens_solver
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
the_eight_queens_solver [2012/02/21 07:24] – xjia | the_eight_queens_solver [2012/02/23 14:02] (current) – xjia | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | < | + | < |
/* The eight queens solver */ | /* The eight queens solver */ | ||
- | int main(string[] args) { | + | int main(string[ ] args) { |
int N; | int N; | ||
- | int[] row, col, diag1, diag2; | + | int[] row, col; |
+ | int[][] d; | ||
| | ||
N = 8; | N = 8; | ||
row = new int[N]; | row = new int[N]; | ||
col = new int[N]; | col = new int[N]; | ||
- | | + | |
- | | + | d[0] = new int[N+N-1]; |
+ | | ||
| | ||
- | | + | |
- | | + | fillIntArray(row, 0); |
- | | + | |
- | | + | |
+ | | ||
| | ||
- | | + | |
| | ||
- | return 0; | ||
- | } | ||
- | |||
- | int fill(int[] a, int v) { | ||
- | int i; | ||
- | | ||
- | for (i = 0; i < a.length; i = i+1) { | ||
- | a[i] = v; | ||
- | } | ||
return 0; | return 0; | ||
} | } | ||
Line 42: | Line 36: | ||
} | } | ||
} | } | ||
- | | + | |
} | } | ||
- | | + | |
- | return 0; | + | |
} | } | ||
- | int try(int N, int[] row, int[] col, int[] diag1, int[] diag2, int c) { | + | int search(int N, int[] row, int[] col, int[][] |
int r; | int r; | ||
| | ||
Line 55: | Line 48: | ||
} else { | } else { | ||
for (r = 0; r < N; r = r+1) { | for (r = 0; r < N; r = r+1) { | ||
- | if (row[r] == 0 && | + | if (row[r] == 0 && |
- | row[r] = 1; | + | row[r] = d[0][r+c] = d[1][r+N-1-c] = 1; |
- | diag1[r+c] = 1; | + | |
- | diag2[r+N-1-c] = 1; | + | |
col[c] = r; | col[c] = r; | ||
- | | + | |
- | row[r] = 0; | + | row[r] = d[0][r+c] = d[1][r+N-1-c] = 0; |
- | diag1[r+c] = 0; | + | |
- | diag2[r+N-1-c] = 0; | + | |
} | } | ||
} | } | ||
} | } | ||
- | return 0; | ||
} | } | ||
</ | </ | ||
+ | |||
+ | Note that '' |
the_eight_queens_solver.1329809048.txt.gz · Last modified: 2012/02/21 07:24 by xjia