Răspuns :
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("partitiinumar4.in");
ofstream g("partitiinumar4.out");
int n, m, x[41], v[41];
void afis(int k)
{
for(int i = 1; i <= k; i++)
g << v[x[i]] << ' ';
g << endl;
}
void sort()
{
for(int i = 1; i < m; i++)
for(int j = i + 1; j <= m; j++)
if(v[i] > v[j])
{
int aux = v[i];
v[i] = v[j];
v[j] = aux;
}
}
void backt(int k, int s)
{
for(int i = x[k - 1]; i <= m; i++)
{
x[k] = i;
int sum = s + v[x[k]];
if(sum <= n) //valid
{
if(sum == n) //este solutie
afis(k);
else
backt(k + 1, sum);
}
}
}
int main()
{
f >> n >> m;
for(int i = 1; i <= m; i++)
f >> v[i];
sort();
x[0] = 1; //artificiu !!
backt(1, 0);
return 0;
}
Vă mulțumim că ați vizitat platforma noastră dedicată Informatică. Ne bucurăm dacă informațiile v-au fost de ajutor. Dacă aveți întrebări suplimentare sau aveți nevoie de asistență, nu ezitați să ne contactați. Revenirea dumneavoastră ne-ar onora, așa că nu uitați să ne adăugați la favorite!