#include <iostream>
#include <cstdlib>
#include <cstring>
using namespace std;
int x[256], w[256];
int M, n;
void print(int n)
{
int i;
for (i = 1; i <= n; i++)
{
if (x[i])
{
cout << w[i] << ' ';
}
}
cout << endl;
}
void sumofsub(int s, int k, int r)
{
if (k > n)
return;
x[k] = 1;
if (s + w[k] == M)
print(k);
else if (s + w[k] + w[k + 1] <= M)
sumofsub(s + w[k], k + 1, r - w[k]);
x[k] = 0;
if (s + r - w[k] >= M && s + w[k + 1] <= M)
sumofsub(s, k + 1, r - w[k]);
}
int main()
{
int a[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20};
int W = 0;
int i;
M = 20;
n = sizeof(a) / sizeof(int);
memset(w, 0, sizeof(w));
for (i = 1; i <= n; i++)
{
w[i] = a[i - 1];
W += w[i];
}
sumofsub(0, 1, W);
cin.get();
return 0;
}
sumofsub
最新推荐文章于 2022-08-22 18:57:50 发布