比较简单的一个DP问题,直接上代码了
#include<stdio.h>
#include<string.h>
int dp[21][15000];
int C, G, a[21], b[21];
int main()
{
scanf("%d %d", &C, &G);
int i,j,k;
for (i = 1; i <= C; i++)
{
scanf("%d", &a[i]);
}
for (i = 1; i <= G; i++)
{
scanf("%d", &b[i]);
}
memset(dp,0,sizeof(dp));
dp[0][7500] = 1;
for (i = 1; i <=G; i++)
{
for (j = 0; j <= 15000; j++)
{
if (dp[i-1][j] != 0)
{
for (k = 1; k <= C; k++)
{
dp[i][j + b[i] * a[k]] += dp[i - 1][j];
}
}
}
}
printf("%d", dp[G][7500]);
}