Pagini recente » Cod sursa (job #2303361) | Cod sursa (job #458574) | Cod sursa (job #2970643) | Cod sursa (job #2368361) | Cod sursa (job #1213220)
#include <fstream>
#include <bitset>
#define DIM 40
using namespace std;
ifstream fin("damesah.in");
ofstream fout("damesah.out");
int x[DIM], y[DIM];
bitset<2*DIM> C, P, S;
int n, sol;
void back(int k) {
if (k>n) {
sol++;
if (sol == 1) {
for (int i=1;i<=n;i++)
fout<<x[i]<<" ";
}
return;
}
for (int i=1;i<=n;i++) {
x[k] = i;
if (!C[i] && !P[(i<=k) ? (k-i) : (n+(i-k))]
&& !S[(k+i<=n+1) ? (n+1-(k+i)) : (n+1 + (k+i))]) {
C[i] = 1;
P[(i<=k) ? (k-i) : (n+(i-k))] = 1;
S[(k+i<=n+1) ? (n+1-(k+i)) : (n+1 + (k+i))] = 1;
back(k+1);
C[i] = 0;
P[(i<=k) ? (k-i) : (n+(i-k))] = 0;
S[(k+i<=n+1) ? (n+1-(k+i)) : (n+1 + (k+i))] = 0;
}
}
}
int main() {
fin>>n;
back(1);
fout<<"\n"<<sol;
return 0;
}