栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java 牛客网之[动态规划 简单]NC11 【模板】01背包

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java 牛客网之[动态规划 简单]NC11 【模板】01背包

题目的链接在这里:https://www.nowcoder.com/practice/fd55637d3f24484e96dad9e992d3f62e

目录
  • 题目大意
  • 一、示意图
  • 二、解题思路
    • 01背包问题


题目大意 你有一个背包,最多能容纳的体积是V。

现在有n个物品,第i个物品的体积为v_iv
i

,价值为w_iw
i

(1)求这个背包至多能装多大价值的物品?
(2)若背包恰好装满,求至多能装多大价值的物品?


一、示意图

二、解题思路
01背包问题
01背包问题

代码如下:

import java.util.*;

public class  Main{
  public static void main(String[] args){
      
      Scanner sc=new Scanner(System.in);
      int n=sc.nextInt();
      int V=sc.nextInt();
      //这个要放在前面
      int[][]dp=new int[n+1][V+1];
      int[][]dp1=new int[n+1][V+1];
      //对dp1进行初始化 关键就是这个初始化
     
      for(int i=1;i<=V;i++){
          dp1[0][i]=Integer.MIN_VALUE;
      }
      int value[]=new int[n+1];
      int w[]=new int[n+1];
      int l=1;
      int k=n;
      while (k-->0){
          //弄反了
          w[l]=sc.nextInt();
          value[l]=sc.nextInt();
          l++;
      }

      //输出两个答案
      


      //然后是初始化 第0个物体 全是0吧
   // Arrays.fill(dp[0],0);
      //然后开始遍历 所以还是这个遍历出了问题
     // int max=0;
      for(int i=1;i<=n;i++){
          for(int j=0;j<=V;j++){
              //前i件物品 放入体积是j的最大价值 那就是选择放 第i件物品还是不放
              if(j0)?dp1[n][V]:0;
      System.out.println(dp1[n][V]);
      }
  }





转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/434987.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号