Pagini recente » Cod sursa (job #1636053) | Monitorul de evaluare | Cod sursa (job #2795056) | Cod sursa (job #1170569) | Cod sursa (job #2002799)
#include <fstream>
using namespace std;
ifstream cin("damesah.in");
ofstream cout("damesah.out");
int Perm[15];
bool used[15];
int d1[35];
int d2[35];
void zero(){
for (int i=1; i<=30; i++){
d1[i]=0;
d2[i]=0;
}
return;
}
void backt(int q, int n, int &s){
if (q == n+1){
for (int i=1; i<=n; i++) {
d1[i- Perm[i] + n]++;
if (d1[i - Perm[i] + n] > 1) {
zero();
return;
}
d2[i + Perm[i]]++;
if (d2[i + Perm[i]] > 1) {
zero();
return;
}
}
zero();
s++;
if (s==1){
for (int i=1; i<=n; i++){
cout<<Perm[i]<<" ";
}
cout<<'\n';
}
return;
}
for (int i=1; i<=n; i++){
if (used[i] != true) {
used[i] = true;
Perm[q] = i;
backt(q+1, n, s);
used[i] = false;
}
}
}
int main() {
int n;
cin>>n;
int s=0;
backt(1,n,s);
cout<<s;
return 0;
}