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\n",dp[t]); 
}

 

posted on 2019-01-03 22:11  zsben  阅读(198)  评论(0编辑  收藏  举报

导航