题目

acwing278. 数字组合

思路

f[i]表示和为i时的数字个数,初始化f[0]=1,和为0时只有一种组合。

#include<iostream>
using namespace std;
const int N=110,M=10010;
int n,m,w,f[M];
int main(){
    cin>>n>>m;
    f[0]=1;
    for(int i=1;i<=n;i++){
        cin>>w;
        for(int j=m;j>=w;j--){
            f[j]+=f[j-w];
        }
    }
    cout<<f[m]<<endl;
    
    return 0;
}