|
|
|
|
#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;
|
|
|
|
|
}
|