Documente Academic
Documente Profesional
Documente Cultură
{
valid=0;
while(!valid && x[k]<n)
{
x[k]=x[k]+1;
posibil(k,valid);
}
if(!valid)k--;
else if(solutie(k)) afisare(k);
else {
k++; /*trecem la ocuparea urmatoarei linii*/
x[k]=0; /*punem tura pe marginea tablei de sah. x[k]=1-min*/
}
}
}
void main()
{
citire();
nr=0;
back();
f.close();
}
{
cout<<"n=";cin>>n;/*citim numarul de linii si de coloane de pe tabla de sah = numarul de
nebuni care trebuie depusi*/
}
void posibil(int k,int &valid)
{
valid=1;
for(int i=1;i<=k-1;i++)
if(abs(x[i]-x[k])==abs(i-k)) valid=0; /*daca nebunul de pe linia k se afla pe aceiasi diagonala
cu nebunul de pe linia i pozitia x[k] nu e corecta*/
}
int solutie(int k)
{
if(k==n)return 1; /*am ajuns la o solutie daca s-au depus toti cei n nebuni*/
else return 0;
}
void afisare(int k) /*afisam numarul solutiei si solutia sub forma de tabla de sah (matrice)*/
{nr++;
f<<"solutia "<<nr<<endl;
for(int i=1;i<=k;i++){
for (int j=1;j<=k;j++)
if (x[i]==j)f<<"N"<<" ";
else f<<"*"<<" ";
f<<endl;}
f<<endl;
}
void back()
{
k=1;
x[k]=0;
while(k>0)
{
valid=0;
while(!valid && x[k]<n)
{
x[k]=x[k]+1;
posibil(k,valid);
}
if(!valid)k--;
else if(solutie(k)) afisare(k);
else {
k++;
x[k]=0;
}
}
}
void main()
{
citire();
nr=0;
back();
f.close();
}
for(int i=1;i<=k;i++){
for (int j=1;j<=k;j++)
if (x[i]==j)f<<"D"<<" ";
else f<<"*"<<" ";
f<<endl;}
f<<endl;
}
void back()
{
k=1;
x[k]=0;
while(k>0)
{
valid=0;
while(!valid && x[k]<n)
{
x[k]=x[k]+1;
posibil(k,valid);
}
if(!valid)k--;
else if(solutie(k)) afisare(k);
else {
k++;
x[k]=0;
}
}
}
void main()
{
citire();
nr=0;
back();
f.close();
}