3 10 1 2 5
10
#include <stdio.h>
#include <string.h>
long long dp[10002];
int a[30];
int main()
{
int i, j;
int v, n;
while(scanf("%d %d", &v, &n )!=EOF )
{
memset(dp, 0, sizeof(dp));
for(i=0; i<v; i++)
{
scanf("%d", &a[i] );
}
dp[0]=1;
for(i=0; i<v; i++)
{
for(j=a[i]; j<=n; j++)
{
dp[j]=dp[j]+dp[ j-a[i] ] ;
}
}
printf("%lld\n", dp[n] ) ;
}
return 0;
}
原文:http://www.cnblogs.com/yspworld/p/3944265.html