👤

1. Se citeste un numar natural n, reprezentand dimensiunea unei table de sah. Sa se genereze toate solutiile de a aseza n ture pe tabla de sah astfel incat turele sa nu se atace intre ele.

2. Se citesc 2 numere n si p si apoi numele a n copii. Sa se genereze toate echipele care se pot forma luand cate p copii din cei n.
urgent dau coroana


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!


Ze Schools: Alte intrebari