052.背包问题

举报
C语言与CPP编程 发表于 2022/04/29 22:44:19 2022/04/29
【摘要】 #include<stdio.h>#include<stdlib.h>#define MAX 100struct Bag{ int weight;int value;}Bag[MAX];int a[MAX];int Value=0;int Weight;int comb(int m,int k){int i,j;...

  
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #define MAX 100
  4. struct Bag
  5. { int weight;
  6. int value;
  7. }Bag[MAX];
  8. int a[MAX];
  9. int Value=0;
  10. int Weight;
  11. int comb(int m,int k)
  12. {int i,j;
  13. int wei,val;
  14. for(i=m;i>=k;i--)
  15. { a[k]=i;
  16. if(k>1)
  17. comb(i-1,k-1);
  18. else
  19. { wei=0; /* 预值0 */
  20. val=0;
  21. for(j=a[0];j>0;j--) /* 每一种组合求它们的重量和价值 */
  22. { wei=wei+Bag[a[j]].weight;
  23. val=val+Bag[a[j]].value;
  24. }
  25. if(wei<=Weight&&val>Value) /* 判断是否满足条件进行附值 */
  26. Value=val;
  27. }
  28. }
  29. return Value;
  30. }
  31. void main()
  32. { int num,subnum;
  33. int l,
  34. clrscr();
  35. printf("输入背包的总个数:"); /* 输入背包的总个数 */
  36. scanf("%d",&num);
  37. printf("输入背包的重量和价值\n",num); /* 输入背包的重量和价值 */
  38. for(l=1;l<=num;l++)
  39. scanf("%d,%d",&Bag[l].weight,&Bag[l].value);
  40. printf("输入满足要求背包的个数:\n"); /* 输入要求背包的个数 */
  41. scanf("%d",&subnum);
  42. printf("输入满足条件的重量:\n",subnum); /* 输入满足条件的重量*/
  43. scanf("%d",&Weight);
  44. a[0]=subnum;
  45. printf("the max value is:%d",comb(num,subnum));
  46. getch();
  47. }

文章来源: blog.csdn.net,作者:程序员编程指南,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/weixin_41055260/article/details/124492277

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。