私信TA

用户名:Praguetramp

访问量:29486

签 名:

等  级
排  名 19
经  验 19961
参赛次数 0
文章发表 130
年  龄 0
在职情况 待业
学  校
专  业

  自我简介:

aura

解题思路:

注意事项:

参考代码:

import java.util.Scanner;

/**
 * 2021年2月23日  下午5:37:46
 * @author praguetramp
 * 01背包问题
 */
public class P1924 {
	//w[]物品重量,v[]物品价值,n物品数量,m背包容积
		private static int MaxValue(int w[],int v[],int n,int m) {
			//dp[n][m]表示前n件物品放在体积为m的背包下,形成的最大价值
			int dp[][] = new int[n+1][m+1];
			for(int i=1;i<=n;i++)
				for(int j=1;j<=m;j++) {
					if(w[i]>j)
						dp[i][j]=dp[i-1][j];  
					else
						dp[i][j]=Math.max(dp[i-1][j], dp[i-1][j-w[i]]+v[i]);
				}
			return dp[n][m];
		}
		public static void main(String[] args) {
			Scanner in = new Scanner(System.in);
			int n=in.nextInt(),m=in.nextInt();
			int w[]=new int[n+1],v[]=new int[n+1];
			for(int i=1;i<=n;i++) {
				w[i]=in.nextInt();v[i]=in.nextInt();
			}
			int ans=MaxValue(w,v,n,m);
			System.out.println(ans);
			in.close();
		}
	}


 

0.0分

0 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区