PDA

View Full Version : [PBINFO] Problema #1281



~Wolf~
03-11-2020, 05:04 PM
Site: pbinfo (<b>You have to register to ba able to see this link</b>)
Link problema: regine1 (<b>You have to register to ba able to see this link</b>)
Mentiune:
-problema cere afisarea unei singure solutii, ceea ce incadreaza acest algoritm intr-o particularitate a algoritmului general pentru rezolvarea problemei a n dame.


#include <iostream>
using namespace std;

int n,v[25],contor;

void back(int);
int solutie(int);
int valid(int);
void afisare(int);
int modul(int);

int main()
{
cin>>n;
back(1);
return 0;
}
int modul(int x)
{
if(x<0)
x=-x;
return x;
}
void back(int k)
{
int i;
for(i=1;i<=n && contor==0;i++)
{
v[k]=i;
if(valid(k))
{
if(solutie(k))
{
afisare(k);
}
else
{
back(k+1);
}
}
}
}
int valid(int k)
{
int i;
for(i=1;i<k;i++)
{
if((v[k]==v[i]) || (modul(v[k]-v[i])==k-i))
{
return 0;
}
}
return 1;
}
int solutie(int k)
{
return k==n;
}
void afisare(int k)
{
int i,j;
for(i=1;i<=k;i++)
{
for(j=1;j<=k;j++)
{
if(j==v[i])
cout<<'*'<<' ';
else
cout<<'-'<<' ';
}
cout<<endl;
}
contor++;
}