USACO 2.3
<问题分析>
每个状态代表可表示的种类数 状态转移方程 s[j]=s[j-c[i]]+s[j]
1 #include <stdio.h> 2 #include <string.h> 3 4 int main() 5 { 6 int v,n,i,j,k,c[26],s[10001]; 7 scanf("%d %d",&v,&n); 8 for(i=1;i<=v;i++) 9 { 10 scanf("%d",&c[i]); 11 } 12 memset(s,0,sizeof(int)*10001); 13 s[0]=1; 14 for(i=1;i<=v;i++) 15 { 16 for(j=0;j<=n;j++) 17 { 18 if(j-c[i]>=0) 19 if(s[j-c[i]]>0) 20 s[j]+=s[j-c[i]]; 21 } 22 } 23 printf("%d\n",s[n]); 24 while(true); 25 return 0; 26 }