Cod sursa(job #2217842)
| Utilizator | Data | 2 iulie 2018 13:26:01 | |
|---|---|---|---|
| Problema | Problema Damelor | Scor | 40 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 1.09 kb |
#include<bits/stdc++.h>
using namespace std;
ifstream f("damesah.in");
ofstream g("damesah.out");
short ma[14][14],n,st[14],sol,rr[14],diag[14],secdiag[14];
bool ok(int k)
{
for(int i=1;i<k;++i)
if((k-i==abs(st[i]-st[k])))
return 0;
return 1;
}
void bck(int k)
{
if(k<=n)
{
for(int i=1;i<=n;++i)
{
if(rr[i]==0 && diag[i-k+n]==0 && secdiag[k+i-1]==0){
st[k]=i;
diag[i-k+n]=1;
secdiag[k+i-1]=1;
ma[k][i]=1;
rr[i]=1;
if(k==n)
{
sol++;
if(sol==1)
{
for(int j=1;j<=n;++j)
g<<st[j]<<' ';
g<<'\n';
}
}
else
bck(k+1);
diag[i-k+n]=0;
secdiag[k+i-1]=0;
ma[k][i]=0;
rr[i]=0;
}
}
}
}
int main()
{
f>>n;
bck(1);
g<<sol;
}
