hdu 寒冰王座

 2023-09-05 阅读 77 评论 0

摘要:链接:http://acm.hdu.edu.cn/showproblem.php?pid=1248 一开始是知道是完全背包问题的,但是不会完全背包,也不能叫全不会,只是理解了一点,还差一点就会了 刚开始写的时候按照f[i][j]=max(f[i-1][j],f[i-1][j-k*weight[i]]+k*w

链接:http://acm.hdu.edu.cn/showproblem.php?pid=1248

一开始是知道是完全背包问题的,但是不会完全背包,也不能叫全不会,只是理解了一点,还差一点就会了

刚开始写的时候按照f[i][j]=max(f[i-1][j],f[i-1][j-k*weight[i]]+k*weight[i]);

到后来才知道是直接求里面最大的f[i][j]=max(f[i-1][j-k*weight[i]]+k*weight[i]);

用个max变量存最大的,然后赋值给f[i][j]

代码如下:

#include <stdio.h>
#include <string.h>
int f[5][10005];int main(){int a[3]={150,200,350},b,c,d,i,j,k,n,m,max;scanf("%d",&n);while(n--){scanf("%d",&m);memset(f[0],0,sizeof(f[0]));for(i=1;i<=3;i++){for(j=150;j<=m;j++){max=0;for(k=0;j-k*a[i-1]>=0;k++)if(f[i-1][j-k*a[i-1]]+k*a[i-1]>max)max=f[i-1][j-k*a[i-1]]+k*a[i-1];f[i][j]=max;}}printf("%d\n",m-f[3][m]);}}



版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://808629.com/146.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 86后生记录生活 Inc. 保留所有权利。

底部版权信息