'commit'
This commit is contained in:
70
C++专题课程/回溯算法/皇后问题(回溯法)/八皇后.cpp
Normal file
70
C++专题课程/回溯算法/皇后问题(回溯法)/八皇后.cpp
Normal file
@@ -0,0 +1,70 @@
|
||||
#include<bits/stdc++.h>
|
||||
using namespace std;
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD>ϸ<EFBFBD><CFB8><EFBFBD><EFBFBD>: https://www.cnblogs.com/cnnnnnn/p/8506883.html
|
||||
|
||||
//8<>ʺ<EFBFBD><CABA><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define line 8
|
||||
|
||||
void queen(int i, int j);
|
||||
int check(int i, int j);
|
||||
//<2F><><EFBFBD><EFBFBD>
|
||||
int chess[line][line];
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
int cas = 0;
|
||||
|
||||
|
||||
int main() {
|
||||
//<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>
|
||||
queen(0, 0);
|
||||
printf("%d\n", cas);
|
||||
return 0;
|
||||
}
|
||||
|
||||
//<2F>ʺ<EFBFBD><CABA>ĵݹ<C4B5><DDB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
void queen(int i, int j) {
|
||||
if (j >= line) {
|
||||
return;
|
||||
}
|
||||
if (check(i, j) == 1) {//<2F><><EFBFBD><EFBFBD><EFBFBD>ܷ<EFBFBD>
|
||||
chess[i][j] = 1;//<2F>Żʺ<C5BB>
|
||||
if (i == line - 1) {//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>У<EFBFBD><D0A3><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD>
|
||||
cas++;
|
||||
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD><EFBFBD><EFBFBD>̽<EFBFBD><CCBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
for (int xx=0;xx<8;xx++)
|
||||
for(int yy=0;yy<8;yy++){
|
||||
printf("%d",chess[xx][yy]);
|
||||
if(yy==7)
|
||||
printf("\n");
|
||||
}
|
||||
printf("\n");
|
||||
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
}
|
||||
else {
|
||||
queen(i + 1, 0);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>оͷ<D0BE><CDB7><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>
|
||||
}
|
||||
}
|
||||
//<2F>ص<EFBFBD><D8B5><EFBFBD><EFBFBD>룡<EFBFBD><EBA3A1><EFBFBD><EFBFBD>
|
||||
chess[i][j] = 0;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD>ò<EFBFBD><C3B2>ܷţ<DCB7><C5A3><EFBFBD><EFBFBD>ÿգ<C3BF>0<EFBFBD><30><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6>Աߵĸ<DFB5><C4B8>ӡ<EFBFBD>
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD>ܷţ<DCB7><C5A3>ߵ<EFBFBD><DFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ζ<EFBFBD><CEB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD>ȫ<EFBFBD><C8AB>ִ<EFBFBD><D6B4><EFBFBD>ˣ<EFBFBD><CBA3>ѻʺ<D1BB><CABA><EFBFBD><EFBFBD>ߣ<EFBFBD><DFA3><EFBFBD><EFBFBD>㣩<EFBFBD><E3A3A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>̽<EFBFBD><CCBD>
|
||||
queen(i, j + 1);
|
||||
}
|
||||
|
||||
//<2F>ж<EFBFBD><D0B6>Dz<EFBFBD><C7B2><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>λ<EFBFBD>÷Żʺ<C5BB>
|
||||
int check(int i, int j) {
|
||||
int k;
|
||||
for (k = 0; k < line; k++) {
|
||||
if (chess[i][k] == 1) return 0;//0=<3D><><EFBFBD>ܷ<EFBFBD>
|
||||
}
|
||||
for (k = 0; k < line; k++) {
|
||||
if (chess[k][j] == 1) return 0;
|
||||
}
|
||||
for (k = -line; k <= line; k++) {//<2F><><EFBFBD>Խ<EFBFBD><D4BD><EFBFBD>
|
||||
if (i + k >= 0 && i + k < line && j + k >= 0 && j + k < line)//<2F><><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD>¶Խ<C2B6><D4BD><EFBFBD>
|
||||
if (chess[i + k][j + k] == 1) return 0;
|
||||
if (i - k >= 0 && i - k < line && j + k >= 0 && j + k < line)//<2F><><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD><C2B5><EFBFBD><EFBFBD>϶Խ<CFB6><D4BD><EFBFBD>
|
||||
if (chess[i - k][j + k] == 1) return 0;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
Reference in New Issue
Block a user