八皇后 无回溯
#include<bits/stdc++.h>
using namespace std;
const int Max=100;
int n,p[Max];
bool hashTable[Max]= {0};
int answer=0;
void generateP(int index) {
if(index==n+1) {
for(int i=1; i<=n; i++) {
for(int j=i+1; j<=n; j++) {
if(abs(i-j)==abs(p[i]-p[j])) {
return ;
}
}
}
answer++;
return ;
}
for(int i=1; i<=n; i++) {
if(!hashTable[i]) {
p[index]=i;
hashTable[i]=1;
generateP(index+1);
hashTable[i]=0;
}
}
}
int main() {
while(cin>>n) {
generateP(1);
cout<<answer<<endl;
}
return 0;
}
using namespace std;
const int Max=100;
int n,p[Max];
bool hashTable[Max]= {0};
int answer=0;
void generateP(int index) {
if(index==n+1) {
for(int i=1; i<=n; i++) {
for(int j=i+1; j<=n; j++) {
if(abs(i-j)==abs(p[i]-p[j])) {
return ;
}
}
}
answer++;
return ;
}
for(int i=1; i<=n; i++) {
if(!hashTable[i]) {
p[index]=i;
hashTable[i]=1;
generateP(index+1);
hashTable[i]=0;
}
}
}
int main() {
while(cin>>n) {
generateP(1);
cout<<answer<<endl;
}
return 0;
}