Pagini recente » Cod sursa (job #57616) | Cod sursa (job #235694) | Cod sursa (job #2067125) | Cod sursa (job #2394919) | Cod sursa (job #2929448)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("damesah.in");
ofstream fout("damesah.out");
const int NMAX = 40;
int n, col[NMAX], dp[NMAX], ds[NMAX], ans = 0;
vector<int>v;
inline void backtracking(int k)
{
if(k == n + 1)
{
ans++;
if(ans == 1)
{
for(auto x : v)
fout << x << ' ';
fout << '\n';
}
}
else
{
for(int i = 1;i <= n; ++ i)
{
if(!col[i] && !dp[i-k+n] && !ds[k+i])
{
v.push_back(i);
col[i] = 1;
dp[i-k+n] = 1;
ds[k+i] = 1;
backtracking(k+1);
col[i] = 0;
dp[i-k+n] = 0;
ds[k+i] = 0;
v.pop_back();
}
}
}
}
inline void solve()
{
backtracking(1);
fout << ans;
}
int main()
{
fin >> n;
solve();
}