Pagini recente » Cod sursa (job #1350184) | Cod sursa (job #2259364) | Cod sursa (job #2357550) | Cod sursa (job #1539198) | Cod sursa (job #2283136)
#include <iostream>
#include <fstream>
using namespace std;
int n,x[100000],f[10000],f2[10000],s[10000],sol;
ifstream fin("damesah.in");
ofstream fout("damesah.out");
void afis(int k){
for(int i=1;i<=k;i++)
fout<<x[i]<<" ";
fout<<endl;
}
bool verif(int k,int i){
if(f[x[k]]==1)
return false;
if(f2[k-i+1000]==1)
return false;
if(s[k+i]==1)
return false;
if(k<=n)
return true;
return false;
}
void back(int k){
for(int i=1;i<=n;++i){
x[k]=i;
if(verif(k,i)){
f[x[k]]=1;
f2[k-i+1000]=1;
s[k+i]=1;
if(k==n && sol>0)
sol++;
if(k==n && sol==0){
afis(k);
sol++;
}
back(k+1);
f[x[k]]=0;
s[k+i]=0;
f2[k-i+1000]=0;
}
}
}
int main (){
fin>>n;
back(1);
fout<<sol;
return 0;
}