Pagini recente » Profil itm_soldan_paul | Profil fabogdan | Cod sursa (job #1179998) | Cod sursa (job #3224169) | Cod sursa (job #2720948)
#include <fstream>
#include <cstring>
#include <vector>
#include <algorithm>
#include <cmath>
#include <queue>
#include <climits>
#define MOD 4001
using namespace std;
ifstream cin("damesah.in") ;
ofstream cout("damesah.out") ;
int n ;
int v[1009], okk ;
int bak(int k)
{
if(k == n + 1)
{
if(!okk)
{
for(int f = 1 ; f <= n ; f ++)
cout << v[f] << " " ;
cout << endl ;
okk = 1 ;
}
return 1 ;
}
///for(int f = 1 ; f < k ; f ++)
/// cout << v[f] << " " ;
/// cout << endl ;
/// trebe sa punem cel mai mic numar posibil pe aceasta pozitie, un numar intre 1 si n
int ss = 0 ;
for(int f = 1 ; f <= n ; f ++)
{
int ok = 1 ;
for(int e = 1 ; e < k ; e ++)
{
if(v[e] == f){ok = 0 ; break ;} ;
/// k este linia celui curent
/// f este coloana celui curent
/// e este linia celui cu care verif
/// v[e] este coloana celui cu care verif
if(k - e == abs(f - v[e])){ok = 0 ; break ;} ;
}
if(ok)v[k] = f, ss += bak(k + 1) ;
}
return ss ;
}
int main()
{
cin >> n ;
cout << bak(1) ;
return 0;
}