Pagini recente » Cod sursa (job #2352002) | Cod sursa (job #51625) | Cod sursa (job #170010) | Cod sursa (job #268488) | Cod sursa (job #1570283)
#include <fstream>
using namespace std;
ifstream f ("damesah.in");
ofstream g ("damesah.out");
const int maxn=15;
int n, nr, ok;
pair<int, int> regina[maxn];
void afisare()
{
for(int i=1; i<=n; i++)
{
g<<regina[i].second<<" ";
}
g<<'\n';
}
inline int mabs(int x)
{
if(x<0)
return -x;
return x;
}
bool valid(int ri, int rj, int nivel)
{
for(int i=1; i<=nivel; i++)
if(rj==regina[i].second || mabs(ri-regina[i].first)==mabs(rj-regina[i].second))
return false;
return true;
}
void back (int linie)
{
if(linie==n+1)
{
nr++;
if(ok==0)
{
afisare();
ok=1;
}
return ;
}
for(int coloana=1; coloana<=n; ++coloana)
{
if(valid(linie, coloana, linie))
{
regina[linie]=make_pair(linie, coloana);
back(linie+1);
}
}
}
int main()
{
f>>n;
back(1);
g<<nr;
return 0;
}