Răspuns :
Problema damelor :
#include <iostream>
using namespace std;
int v[20], n, index = 1;
int solutie(int k){
if (k==n) return 1;
return 0;
}
void tipar(){
int i,j;
cout << "\n\t Solutie #" << index++ << " : ";
for (i=1;i<=n;i++){
cout << endl;
for (j=1;j<=n;j++){
if(j==v[i]) cout << "R ";
else cout << "0 ";
}
}
}
int valid(int k){
int i,abs;
for(i=1;i<k;i++){
//cout << "Test : " << i<< k <<" -> "<<v[i] << v[k]<<endl;
//Test coloana
if(v[i]==v[k]) return 0;
//Test diagonala
abs = v[k]-v[i];
if(abs<0) abs *=-1;
if(k-i == abs) return 0;
}
return 1;
}
void BK(int k) {
int i;
for (i=1;i<=n;i++){
v[k]=i;
if (valid(k)==1){
if (solutie(k)==1)
tipar();
else
BK(k+1);
}
}
}
int main()
{
cout << "Numarul de regine : ";
cin >> n;
BK(1);
if(index==1) cout << "Nu exista solutii.";
}
Iar problema cealalta e un simplu combinari de n luate cate k la care memorezi numele copiilor in vector si il afisezi in functia de afisare. Mai exact in loc de v[i] afisezi nume[v[i]].
Vă mulțumim pentru vizita pe site-ul nostru dedicat Informatică. Sperăm că informațiile prezentate v-au fost utile. Dacă aveți întrebări sau aveți nevoie de suport suplimentar, nu ezitați să ne contactați. Ne bucurăm să vă revedem și vă invităm să ne adăugați în lista de favorite!