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 că ați vizitat site-ul nostru dedicat Informatică. Sperăm că informațiile oferite v-au fost de ajutor. Dacă aveți întrebări sau nevoie de asistență suplimentară, nu ezitați să ne contactați. Vă așteptăm cu drag data viitoare și nu uitați să ne adăugați la favorite!