Pagini recente » Cod sursa (job #1554500) | Cod sursa (job #2165814) | Cod sursa (job #1531059) | Cod sursa (job #1846278) | Cod sursa (job #3149773)
#include <bits/stdc++.h>
using namespace std;
ifstream f("damesah.in");
ofstream g("damesah.out");
int n,C[15],DP[30],DS[30],s[15],p[15],nr;
void bkt(int i,int j)/// backtracking = metoda de programare folosita
{
if(j==n+1)return;
if(i==n+1)/// caz special - am gasit o solutie
{
nr++;/// contorizez ca am gasit o noua solutie !!!
if(nr==1)/// daca am gasit prima solutie o afisez !!!
{
for(int i=1;i<=n;i++)
g<<s[i]<<' ';
g<<'\n';
}
return;
}
if(C[j]==0&&DP[n-i+j]==0&&DS[i+j-1]==0)///(i,j) este neatacata de dame de pe linii < i
{
/// incerc sa construiesc o solutie cu dama pusa aici !!!
s[i]=j;
C[j]=DP[n-i+j]=DS[i+j-1]=1;
bkt(i+1,1);
C[j]=DP[n-i+j]=DS[i+j-1]=0;
}
bkt(i,j+1);
}
int main()
{
f>>n;
bkt(1,1);
g<<nr<<'\n';
return 0;
}