动态规划原理
见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.csdn.net/MMMMMMMW/article/details/79765849