POJ1837-Balance
http://poj.org/problem?id=1837
#include<stdio.h> #include<string.h> int dp[21][15001],c[21],g[21]; int main(void) { int C,G,i,j,k; scanf("%d %d",&C,&G); for(i=0;i<C;i++) scanf("%d",&c[i]); for(j=0;j<G;j++) scanf("%d",&g[j]); memset(dp,0,sizeof(dp)); dp[0][7500]=1; for(i=1;i<=G;i++) for(j=1;j<=15000;j++) { if(dp[i-1][j]!=0) { for(k=0;k<C;k++) dp[i][j+c[k]*g[i-1]]+=dp[i-1][j]; } } printf("%d\n",dp[G][7500]); return 0; }