Pagini recente » Cod sursa (job #2034195) | Cod sursa (job #230871) | Cod sursa (job #2005741) | Cod sursa (job #2632643) | Cod sursa (job #1784900)
#include <fstream>
#include <vector>
#include <cmath>
std::ifstream f ("damesah.in");
std::ofstream t ("damesah.out");
int level,n;
bool ok=true;
std::vector <int> v={0,0,0,0,2,10,4,40,92,352,724,2680,14200,73712},c(15),sol(15);
void bt(int level) {
if (level>n and ok) {
ok=false;
for (int i=1; i<=n; ++i) sol[i]=c[i];
}
else if (ok) for (int i=c[level]+1; i<=n; ++i){
bool aux=true;
for (int j=1; j<level; ++j)
if ( c[j]==i or std::abs(c[j]-i)==level-j ){
aux=false; break;
}
if (aux){
c[level]=i;
bt(level+1);
c[level]=0;
}
}
}
int main()
{
f>>n;
bt(1);
for (int i=1;i<=n;++i)
t<<sol[i]<<" ";
t<<'\n'<<v[n];
return 0;
}