Pagini recente » Cod sursa (job #3204183) | Cod sursa (job #1766430) | Cod sursa (job #1409724) | Cod sursa (job #3147440) | Cod sursa (job #1653054)
#include <fstream>
using namespace std;
ifstream fin("damesah.in");
ofstream fout("damesah.out");
int n;
int st[15],f[15], diag1[2 * 15 + 10], diag2[2 * 15 + 10];
int nr_sol = 0;
void back(int lung)
{
int i;
if(lung == n)
{
if (nr_sol == 0) {
for(i=1;i<=n;i++)
fout<<st[i]<<" ";
fout<<"\n";
}
++nr_sol;
}
else
{
for(i=1;i<=n;i++)
if(f[i]==0 && diag1[lung + 1 - i + n] == 0 && diag2[lung + i + 1] == 0)
{
f[i]=1;
diag1[lung - i + n + 1] = 1;
diag2[lung + i + 1] = 1;
st[lung+1]=i;
back(lung+1);
f[i]=0;
diag1[lung - i + n + 1] = 0;
diag2[lung + i + 1] = 0;
}
}
}
int main()
{
fin>>n;
back(0);
fout << nr_sol;
return 0;
}