Pagini recente » Cod sursa (job #593817) | Cod sursa (job #1367462) | Cod sursa (job #872861) | Cod sursa (job #358272) | Cod sursa (job #1291908)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream is("damesah.in");
ofstream os("damesah.out");
int n;
int x[20];
bool l[20], c[20], dp[40], ds[40];
int cnt;
inline void Back(int k);
void Write();
int main()
{
is >> n;
Back(1);
os << cnt;
is.close();
os.close();
return 0;
}
inline void Back(int k)
{
if(k > n)
{
if(cnt == 0) Write();
cnt++;
return;
}
for(int i = 1; i <= n; ++i)
{
x[k] = i;
if(!l[x[k]] && !dp[n + k - x[k] + 1] && !ds[k + x[k] - 1])
{
l[x[k]] = 1;
dp[n + k - x[k] + 1] = 1;
ds[k + x[k] - 1] = 1;
Back(k+1);
l[i] = 0;
dp[n + k - x[k] + 1] = 0;
ds[i + k - 1] = 0;
}
}
}
void Write()
{
for(int i =1; i <= n; ++i)
os << x[i] << ' ';
os << '\n';
return;
}