'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><D3A1><EFBFBD>̺ͻʺ<CDBB>
|
||||
void showQueens(int queenArr[],int nlen,int nSolution) {
|
||||
//<2F>ⷨ<EFBFBD><E2B7A8><EFBFBD><EFBFBD>
|
||||
cout<<nSolution<<endl;
|
||||
|
||||
for(int i = 0; i < nlen; ++i) {
|
||||
//<2F><>ӡ<EFBFBD>ʺ<EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD>
|
||||
for(int j = 0; j < queenArr[i]; ++j) {
|
||||
cout<<"1";//<2F>ո<EFBFBD><D5B8><EFBFBD>
|
||||
}
|
||||
cout<<"Q";//<2F>ʺ<EFBFBD>
|
||||
//<2F><>ӡ<EFBFBD>ʺ<EFBFBD><CABA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD>
|
||||
for(int z = 0; z < nlen-queenArr[i]-1; ++z) {
|
||||
cout<<"1";
|
||||
}
|
||||
cout<<endl;
|
||||
}
|
||||
cout<<" "<<endl;
|
||||
}
|
||||
|
||||
//<2F>ж<EFBFBD><D0B6>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>Ϲ<EFBFBD><CFB9><EFBFBD>
|
||||
bool rule(int queenArr[]) {
|
||||
//ÿһ<C3BF>У<EFBFBD>ÿһ<C3BF><D2BB>ȥ<EFBFBD><C8A5><EFBFBD><EFBFBD>
|
||||
for(int i = 0; i <= 7; ++i) {
|
||||
for(int j = 0; j <= i-1; ++j) {
|
||||
//<2F>жϻʺ<CFBB><CABA>Ƿ<EFBFBD><C7B7><EFBFBD>ͬһ<CDAC><D2BB>,<2C><>Ϊ<EFBFBD><CEAA>ʱû<CAB1><C3BB><EFBFBD><EFBFBD>ͬһ<CDAC>зţ<D0B7><C5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>в<EFBFBD><D0B2><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD>
|
||||
if(queenArr[i] == queenArr[j]) {
|
||||
return false;
|
||||
}
|
||||
//<2F>жϻʺ<CFBB><CABA>Ƿ<EFBFBD><C7B7>ڶԽ<DAB6>45<34><35>
|
||||
if(abs(queenArr[i]-queenArr[j]) == abs(i-j)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
//<2F>ƶ<EFBFBD><C6B6>ʺ<EFBFBD>
|
||||
void enumQueensPositon(int queenArr[],int &nSolution) {
|
||||
for(queenArr[0] = 0; queenArr[0] < 8; ++queenArr[0])
|
||||
for(queenArr[1] = 0; queenArr[1] < 8; ++queenArr[1])
|
||||
for(queenArr[2] = 0; queenArr[2] < 8; ++queenArr[2])
|
||||
for(queenArr[3]=0; queenArr[3] < 8; ++queenArr[3])
|
||||
for(queenArr[4] = 0; queenArr[4] < 8; ++queenArr[4])
|
||||
for(queenArr[5] = 0; queenArr[5] < 8; ++queenArr[5])
|
||||
for(queenArr[6] = 0; queenArr[6] < 8; ++queenArr[6])
|
||||
for(queenArr[7] = 0; queenArr[7] < 8; ++queenArr[7])
|
||||
{
|
||||
if (!rule(queenArr)) {
|
||||
continue;
|
||||
} else {
|
||||
++nSolution;
|
||||
showQueens(queenArr ,8, nSolution);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int main() {
|
||||
int queenArr[8]; //ÿ<><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>ʾһ<CABE><D2BB><EFBFBD>ʺ<EFBFBD>
|
||||
int nSolution = 0;//<2F>ⷨ<EFBFBD><E2B7A8><EFBFBD><EFBFBD>
|
||||
//<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>
|
||||
enumQueensPositon(queenArr,nSolution);
|
||||
|
||||
//printf("%d ",nSolution);
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user