Pagini recente » Cod sursa (job #192781) | Cod sursa (job #50638) | Cod sursa (job #3214486) | Cod sursa (job #939193) | Cod sursa (job #1734127)
#include <fstream>
using namespace std;
int n,x[15],sol,ok3;
ifstream fin ("damesah.in");
ofstream fout ("damesah.out");
int cont (int pas){
for (int i=1;i<pas;i++){
if (x[pas] == x[i])
return 0;
}
int ok = x[pas]+1;
int ok2 = x[pas]-1;
for (int i=pas-1;i>=1;i--){
if (x[i] == ok && ok <= n)
return 0;
ok++;
if (x[i] == ok2 && ok2 != 0)
return 0;
ok2--;
}
return 1;
}
void back(int pas) {
if (pas > n) {
if (ok3 == 0){
for (int i=1;i<=n;i++)
fout<<x[i]<<" ";
fout<<"\n";
}
sol++;
ok3++;
return;
}
// forul parcurge toate elementele posibile la o anumita
// pozitie pas din solutie
for (int i=1;i<=n;i++) {
x[pas] = i;
if ( cont(pas) == 1 ) {
// daca elementul incercat pe pozita pas poate duce la solutie alaturi de
// cel eincercate deja pe pozitiile 1..pas-1
back(pas+1);
}
}
}
int main (){
fin>>n;
back (1);
fout<<sol;
return 0;
}