Pagini recente » Cod sursa (job #351756) | Cod sursa (job #1104396) | Cod sursa (job #2617170) | 26_februarie_simulare_oji_2024_clasa_10 | Cod sursa (job #2683928)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("damesah.in");
ofstream g("damesah.out");
int n,nr,sol[500];
bool l[250],c[250],dp[500],ds[500];
void fil(int i, int j, int x)
{ l[i]=x;
c[j]=x;
dp[i-j+n]=x;
ds[j+i]=x;
}
bool ver(int i, int j)
{ return !l[i]&&!c[j]&&!dp[i-j+n]&&!ds[j+i];
}
void bkt(int k,int i, int j)
{ if(j==n+1)
{ if(sol[i])
{ j=1;
i++;
}
else
{ return;
}
}
if(i==n+1)
{ nr++;
if(nr==1)
{ for(int l=1;l<=n;l++) g<<sol[l]<<' ';
g<<'\n';
}
return;
}
if(ver(i,j))
{ fil(i,j,1);
sol[i]=j;
bkt(k+1,i+1,1);
sol[i]=0;
fil(i,j,0);
bkt(k,i,j+1);
}
else bkt(k,i,j+1);
}
int main()
{
f>>n;
bkt(1,1,1);
g<<nr;
return 0;
}