您的位置:首页 > 产品设计 > UI/UE

m[]个价值为w[]的货币能否构成value

2012-05-08 21:04 169 查看
//判m[]个价值为w[]的货币能否构成value

//适合m[]较大w[]较小的情况

//返回布尔量

//传入货币种数n,个数m[],价值w[]和目标值value

#include<stdio.h>

#include<string.h>

#include<math.h>

#define MAXV 100000

int genfunc(int n,int* m,int* w,int value){

int i,j,k,c;

char r[MAXV];

for (r[0]=i=1;i<=value;r[i++]=0);

for (i=0;i<n;i++){

for (j=0;j<w[i];j++){

c=m[i]*r[k=j];

while ((k+=w[i])<=value)

if (r[k])

c=m[i];

else if (c)

r[k]=1,c--;

if (r[value])

return 1;

}

}

return 0;

}

int main()

{

int m[100],w[100],n,value,i;

while(1)

{

scanf("%d%d",&n,&value);

sum=0;

for(i=0;i<n;i++)

{

scanf("%d%d",&m[i],&w[i]);

sum+=m[i]*w[i];

}

for(i=0;i<=sum;i++)

{

if(genfunc(n,m,w,value))

printf("YES\n");

else

printf("NO\n");

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐