动态规划原理
见onenote笔记
题目:
有 n 种(每一种有无数个)重量和价值分别为Wi,Vi的物品,现从这些物品中挑选出总
量不超过 W 的物品,求所有方案中价值总和的最大值。
Input:
输入包含多组测试用例,每一例的开头为两位整数 n、W(1<=n<=10000,1<=W<=1000)
,接下来有 n 行,每一行有两位整数 Wi、Vi(1<=Wi<=10000,1<=Vi<=100)
代码
package august15;
public class 背包问题 {
public static void main(String[] args) {
int [] wi=new int[]{2,3,4};
int [] vi=new int[]{3,4,5};
int []dp=new int[100];
dp[1]=0;
dp[0]=0;
dp[2]=0;
dp[3]=0;
dp[4]=0;
dp[5]=0;
for(int i=0;i<=2;i++)
{
for(int j=5;j>=wi[i];j--)
{
if(dp[j]>dp[j-wi[i]]+vi[i])
{
}
else{
dp[j]= dp[j-wi[i]]+vi[i];
}
}
}
System.out.println(dp[5]);
System.out.println(dp[3]);
System.out.println(dp[2]);
System.out.println(dp[1]);
System.out.println(dp[0]);
}
}
标答
https://blog.youkuaiyun.com/MMMMMMMW/article/details/79765849
本文详细探讨了使用动态规划算法解决背包问题的方法,通过实例解析如何在给定的重量限制下,选择一系列物品以达到价值最大化的解决方案。文章提供了一段Java代码示例,展示了动态规划的具体实现过程。
761

被折叠的 条评论
为什么被折叠?



