Pagini recente » Cod sursa (job #2425782) | Cod sursa (job #2069707) | Cod sursa (job #1536302) | Cod sursa (job #2632276) | Cod sursa (job #3149440)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("damesah.in");
ofstream fout("damesah.out");
int st[20], n, fr[20], cnt;
void Afisare(){
cnt++;
if(cnt == 1)
{
for(int i = 1; i <= n; i++){
fout << st[i] << " ";
}
fout << "\n";
}
}
bool Valid(int top, int i){
int j;
///verificam daca avem dama pe coloana i
if(fr[i] == 1) return false;
for(j = 1; j < top; j++)
/// abs = modul
/// daca diferenta dintre linii este egala cu diferenta dintre coloane
/// atunci dama i este pe o diagonala cu dama j
if(abs(j - top) == abs(st[j] - i)) return false;
return true;
}
void Back(int top){
int i;
if(top == n + 1)
Afisare();
else{
for(i = 1; i <= n; i++){
if(Valid(top, i)){
fr[i] = 1;
st[top] = i;
Back(top + 1);
fr[i] = 0;
}
}
}
}
int main()
{
fin >> n;
Back(1);
fout << cnt;
return 0;
}