#include <cstdlib>
#include <iostream>
#include <algorithm>
using namespace std;
struct Num{
int v, q;
}num[12];
int t, n;
int qty[12];
int cnt, j;
void Test(int p)
{
if (p == -1)
{
int sum = 0;
for (int i = 0; i < j; i++)
sum += qty[i]*num[i].v;
if (sum == t)
{
cnt = 1;
int q[12], i;
for (i = 0; i < j; i++) q[i] = qty[i];
int ss = 0;
for (i =j-1; i >=0; i--)
{
while (q[i]>0){
if (ss) printf("+");
ss=1;
printf("%d", num[i].v);
q[i]--;
}
}
printf("/n");
}
return ;
}
for (int q = num[p].q; q>=0; q--){
qty[p] = q;
Test(p-1);
}
}
int main()
{
int a[12];
while (scanf("%d",&t), t)
{
scanf("%d", &n);
for (int i = 0; i < n; i++)
scanf("%d", &a[i]);
sort(a, a+n);
Num tmp={a[0], 1};
j = 0;
for (int i = 1; i < n; i++)
{
if (a[i] == a[i-1]) tmp.q++;
else
{
num[j++] = tmp;
tmp.v = a[i]; tmp.q = 1;
}
}
num[j++] = tmp;
printf("Sums of %d:/n", t);
cnt = 0;
Test(j-1);
if (cnt == 0) printf("NONE/n");
//cout<<endl;
}
}
zoj 1711 Sum It Up
最新推荐文章于 2019-05-13 16:29:24 发布