Pagini recente » Cod sursa (job #425499) | Cod sursa (job #65321) | Cod sursa (job #1259147) | Cod sursa (job #1545087) | Cod sursa (job #1995263)
#include <iostream>
#include <cmath>
#include <fstream>
using namespace std;
ifstream f("damesah.in");
ofstream g("damesah.out");
int n, x[100], nrsol = 0;
bool afisa;
int valid(int x[], int k)
{
for(int i = 1; i < k; i++)
if(x[k] == x[i] || k - i == abs(x[k] - x[i]))
return 0;
return 1;
}
void afis(int x[], int n)
{
nrsol++;
if(afisa==0){
for(int i = 1; i <= n; i++)
g << x[i] << ' ';
g<<'\n';
afisa=1;
}
}
void backt(int k)
{
for(int v = 1; v <= n; v++)
{
x[k] = v;
if(valid(x, k))
{
if(k == n)
{
afis(x, n);
v = n; //fortare "revenire"
}
else
backt(k + 1);
}
}
}
int main()
{
f >> n;
backt(1);
g << nrsol;
return 0;
}