Pagini recente » Cod sursa (job #3186777) | Cod sursa (job #3240455) | Cod sursa (job #560470) | Cod sursa (job #2206905) | Cod sursa (job #2089395)
#include <fstream>
using namespace std;
ifstream in("damesah.in");
ofstream out("damesah.out");
const int N = 15;
int st[N], n;
unsigned long long sol;
bool dp[2*N], ds[2*N], viz[N];
void afis(int l){
for(int i=1;i<l;i++)
out<<st[i]<<" ";
out<<"\n";
}
void bkt(int l){
int diagP, diagS;
if(l == n+1 && (sol++ == 0))
afis(l);
else
for(int i=1;i<=n;i++){
diagP = i - l + n;
diagS = i + l;
if(viz[i] == false && dp[diagP] == false && ds[diagS] == false){
viz[i] = dp[diagP] = ds[diagS] = true;
st[l] = i;
bkt(l+1);
viz[i] = dp[diagP] = ds[diagS] = false;
}
}
}
int main()
{
in>>n;
in.close();
bkt(1);
out<<sol<<"\n";
out.close();
return 0;
}