一本通 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;
}

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

猜你喜欢

转载自www.cnblogs.com/Benjamin-cpp/p/10846614.html