Pagini recente » Cod sursa (job #1602496) | Cod sursa (job #2492899) | Cod sursa (job #828413) | Cod sursa (job #1218125) | Cod sursa (job #3004591)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("damesah.in");
ofstream fout("damesah.out");
int n,cnt=0,first=1;
int fcol[100],fdiaga[100],fdiags[100];
vector<int> coloane;
bool NotSeeing(int lin,int col)
{
if(fcol[col]==1 || fdiags[lin-col+15]==1 || fdiaga[lin+col]==1)
{
return false;
}
return true;
}
void solve(int lin)
{
if(lin==n+1)
{
cnt++;
if(first==1)
{
for(int i=0;i<n;i++)
{
fout<<coloane[i]<<' ';
}
first=0;
}
return;
}
for(int i=1;i<=n;i++)
{
if(NotSeeing(lin,i))
{
coloane.push_back(i);
fcol[i]=1;
fdiags[lin-i+15]=1;
fdiaga[lin+i]=1;
solve(lin+1);
fcol[i]=0;
fdiags[lin-i+15]=0;
fdiaga[lin+i]=0;
coloane.pop_back();
}
}
return;
}
int main()
{
fin>>n;
solve(1);
fout<<'\n'<<cnt;
return 0;
}