Pagini recente » Cod sursa (job #1435438) | Cod sursa (job #1224502) | Cod sursa (job #2135608) | Cod sursa (job #1408295) | Cod sursa (job #2565468)
#include <iostream>
#include <fstream>
#include <numeric>
#include <vector>
using namespace std;
ifstream fin("damesah.in");
ofstream fout("damesah.out");
int n;
int sol[15];
int a[15][15];
bool verificare() {
for (int i=1;i<=n;++i)
a[sol[i]][i] = 1;
for (int i=1;i<=n;++i) {
int s = 0;
for (int j=1;j<=n;++j)
s+=a[i][j];
if (s > 1) return false;
}
for (int i=1;i<=n;++i) {
int s = 0;
for (int j=1;j<=n;++j)
s+=a[j][i];
if (s > 1) return false;
}
return true;
}
bool check(int pas) {
for (int i=1;i<pas;++i)
if (sol[i] == sol[pas]) return false;
return true;
}
void afisare() {
if(!verificare()) return;
for (int i=1;i<=n;++i)
cout<<sol[i]<<" ";
cout<<"\n";
}
void backtrack(int pas) {
if (pas > n)
afisare();
else
for(int i=1;i<=n;++i) {
sol[pas] = i;
if (check(pas)) backtrack(pas+1);
}
}
int main() {
fin >> n;
backtrack(1);
}