You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

71 lines
1.5 KiB

2 years ago
#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;
}