多重背包问题,求硬币可以有多少种组合(价值要小于m)
#include<stdio.h>
#include<string.h>
int dp[100010];
int main()
{
int i,j,n,m,cont[1001],num[1001],ans,k;
while(scanf("%d%d",&n,&m),(n||m))
{
for(i=0;i<n;i++)
scanf("%d",&cont[i]);
for(i=0;i<n;i++)
scanf("%d",&num[i]);
memset(dp,0,sizeof(dp));
dp[0]=1;
for(i=0;i<n;i++)
{
k=num[i];
if(k*cont[i]>=m)
{
for(j=cont[i];j<=m;j++)
{
if(dp[j-cont[i]]==0)conti......
阅读全文