Pagini recente » Cod sursa (job #2671874) | Cod sursa (job #1351760) | Cod sursa (job #773150) | Cod sursa (job #395965) | Cod sursa (job #554045)
Cod sursa(job #554045)
#include <iostream>
#include <cmath>
using namespace std;
int n,m,s[20],x[20];
void retSol(int a)
{
cout<<"solutia "<< a<<": ";
for(int i=0;i<n;++i) cout<<s[x[i]-1]<<" ";
cout<<endl;
}
int continuare(int k)
{
for(int i=0;i<k;++i)
if(x[k]==x[i] || abs((float)k-i)==abs((float)x[k]-x[i])) return 0;
return 1;
}
void backtracking()
{
int k=0,nrSol=0,i;
for(i=0;i<n;i++) x[i]=0;
while(k>=0)
{
if(k==n)
{
retSol(++nrSol);
k--;
}
else
{
if(x[k]<n)
{
x[k]++;
if(continuare(k)) k++;
}
else x[k--]=0;
}
}
}
int main()
{
cin>>n;
for(int i=0;i<n;++i)s[i]=i+1;
backtracking();
return 0;
}