一本通 1291:数字组合

数字组合

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\n", f[v]);
	return 0;
}

做完这道题之后建议去做一做货币系统

posted @ 2019-05-10 20:33  Mystery_Sky  阅读(327)  评论(0编辑  收藏  举报