数字组合
01背包的变式。
#include <iostream>
#include <cstdio>
using namespace std;
//Mystery_Sky
//
#define ll long long
#define M 1000
int c[M], f[M];
int v, m;
int main() {
scanf("%d%d", &m, &v);
for(int i = 1; i <= m; i++) scanf("%d", &c[i]);
f[0] = 1;
for(int i = 1; i <= m; i++)
for(int j = v; j >= c[i]; j--)
f[j] += f[j-c[i]];
printf("%d
", f[v]);
return 0;
}