openj 4004 01背包问题求方案数

#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
#define ll long long 

int t,n,a[25],dp[1050];

int main(){
    scanf("%d%d",&n,&t);
    for(int i=1;i<=n;i++)scanf("%d",&a[i]);
    memset(dp,0,sizeof dp);
    dp[0]=1;//初始条件
    for(int i=1;i<=n;i++)
        for(int j=t;j>=a[i];j--)
            dp[j]+=dp[j-a[i]];
    printf("%d
",dp[t]); 
}
原文地址:https://www.cnblogs.com/zsben991126/p/10217260.html