Pagini recente » Cod sursa (job #399358) | Cod sursa (job #3222454) | Cod sursa (job #621357) | Cod sursa (job #364012) | Cod sursa (job #1092101)
#include<stdio.h>
#include<algorithm>
#include<cstring>
#define maxn 20
using namespace std;
int n,nr;
int x[maxn],sol[maxn];
int C[maxn],Dp[maxn<<1],Ds[maxn<<1];
void back(int k)
{
if(k>n){
nr++; if(nr==1) memcpy(sol,x,sizeof(x));
return;
}
for(int i=1;i<=n;i++)
if(!C[i] && !Dp[k-i+n] && !Ds[k+i]){
x[k]=i;
C[i]++; Dp[k-i+n]++; Ds[k+i]++;
back(k+1);
C[i]--; Dp[k-i+n]--; Ds[k+i]--;
}
}
void print()
{
for(int i=1;i<=n;i++) printf("%d ",sol[i]);
printf("\n%d",nr);
}
int main()
{
freopen("damesah.in","r",stdin);
freopen("damesah.out","w",stdout);
scanf("%d",&n);
back(1);
print();
fclose(stdin);
fclose(stdout);
return 0;
}