Informatică, întrebare adresată de daria2879, 8 ani în urmă

Se citesc de la tastatură n, număr natural nenul (n≤10) şi elementele unei mulţimi A care memorează n numere întregi. Să se afişeze toate submulţimile mulţimii A={a1,a2,a3,...an} cu suma egala cu s citit

Răspunsuri la întrebare

Răspuns de andrei750238
1

#include <iostream>

using namespace std;

int n, s, i, a[11];

bool sol[11];

int suma(int lvl){

   //Calculeaza suma elementelor din vector pana in prezent

   int s=0;

   for(int i=1;i<=lvl;i++){

       if(sol[i])s+=a[i];

   }

   return s;

}

void afisare(int lvl){

   //Afiseaza solutia

   int i=1;

   cout << "\n{";

   for(i=1;i<=lvl;i++){

       if(sol[i]) cout << a[i] << ", ";

   }

   cout << "\b\b}";

}

void bkt(int lvl){

   //Subprogram principal backtracking

   for(int var=0;var<=1;var++){

       sol[lvl]=var;

       int sum=suma(lvl);

       if(sum==s)afisare(lvl);

       if(lvl<=n){

           bkt(lvl+1);

       }

   }

}

int main(){

   //Citire date

   cout << "n = ", cin >> n;

   for(i=1;i<=n;i++) cin >> a[i];

   cout << "s = ", cin >> s;

   bkt(1);

}

Alte întrebări interesante