AcWing 2. 01背包问题

题目描述

2.png

解题思路:
21.png

相关代码:

import java.util.Scanner;
public class Main {public static void main(String[] args){Scanner scanner = new Scanner(System.in);/**  背包问题的物品下标最好从1开始。* *//*定义一f[i][j]数组,i表示的是前i个物品,j表示体积不超过j,值表示最大价值*/int f[][] = new int[1010][1010];int v[] = new int[1010];int w[] = new int[1010];int N = scanner.nextInt();int V = scanner.nextInt();for(int i=1;i<=N;i++){v[i] = scanner.nextInt();w[i] = scanner.nextInt();}for(int i=1;i<=N;i++)for(int j=0;j<=V;j++)if(j>=v[i]) f[i][j] = Math.max(f[i-1][j],f[i-1][j-v[i]]+w[i]);else f[i][j] = Math.max(f[i-1][j],f[i][j]);System.out.println(f[N][V]);}
}

如果以物品的数量来看待问题,还有另一种解法

相关代码

import java.util.Scanner;public class Main {public static void main(String[] args){Scanner scanner = new Scanner(System.in);/**  背包问题的物品下标最好从1开始。* *//*定义一f[i][j]数组,i表示的是前i个物品,j表示体积不超过j,值表示最大价值*/int f[][] = new int[1010][1010];int v[] = new int[1010];int w[] = new int[1010];int N = scanner.nextInt();int V = scanner.nextInt();for(int i=1;i<=N;i++){v[i] = scanner.nextInt();w[i] = scanner.nextInt();}for(int i=1;i<=N;i++)for(int j=0;j<=V;j++)for(int k=0;k*v[i]<=j&&k<=1;k++)f[i][j] = Math.max(f[i][j],f[i-1][j-k*v[i]]+k*w[i]);System.out.println(f[N][V]);}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/545016.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Go——运算符,变量和常量,基本类型

一.运算符 Go语言内置的运算符有&#xff1a; 算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 1.1 算术运算符 注意&#xff1a;(自增)和--(自减)在go语言中是单独的语句&#xff0c;并不是运算符。 1.2 关系运算符 1.3 逻辑运算符 1.4 位运算符 位运算符对整数在内存…

202206青少年软件编程(图形化) 等级考试试卷(二级)

青少年软件编程(图形化) 等级考试试卷(二级)2022年6月 第1题:【 单选题】 角色初始位置如图所示,下面哪个选项能让角色移到舞台的左下角? ( ) A: B: C: D: 【正确答案】: C 【试题解析】 : 舞台的左下角, 坐标 x 为负数, 坐标 y 为负数, 故应该使用移…

在pzp203上运行ad9361 no-os工程

0. 环境 - pzp203 - ubuntu18 vivado2018 pzp203是一款plutosdr的国产兼容版。出厂默认是基于linux系统的&#xff0c;用libiio调用。软硬件兼容adalm-pluto。开发板提供网盘资料&#xff0c;是添加了板卡适配的。 1. hdl 1.1 准备源码 hdl https://github.com/analogdevi…

白话模电:3.三极管(考研面试与笔试常考问题)

一、三极管的简单判断 1.判断三极 1)给了图 左边是b,有箭头是e,剩下是c 2)给了电位 b:中间值&#xff0c;e:较近值(离中间值)&#xff0c;c:较远值(离中间值) 2.判断流向 bc同向(共同流向“|”或共同流离“|”)&#xff0c;e与bc反向 3.判断材料 4.判断类型 5.判断能否构…

15 顶级的免费 SD 卡恢复软件来恢复丢失的数据

查看顶级 SD 卡恢复软件。比较功能并选择最好的免费或付费存储卡数据恢复软件&#xff1a; SD 卡是一种方便的小硬件&#xff0c;可用于存储数据。了解这些设备在首次推出几十年后仍然如此受欢迎是一件很有趣的事情。尽管我们可以使用其他可以说是更好的替代品&#xff0c;但它…

鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:TextPicker)

滑动选择文本内容的组件。 说明&#xff1a; 该组件从API Version 8开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 子组件 无 接口 TextPicker(options?: {range: string[] | string[][] | Resource | TextPickerRangeContent[] | Te…

python副业兼职手段有哪些

经过多年的总结&#xff0c;鄙人发现python是最适合做兼职副业的编程语言&#xff0c;无论是国内还是国外&#xff0c;对python的需求非常大&#xff0c;python简直就是万能语言。Python副业兼职手段有以下几种&#xff1a; 兼职处理数据&#xff1a;Excel整理数据功能虽然很强…

C#,动态规划问题中基于单词搜索树(Trie Tree)的单词断句分词( Word Breaker)算法与源代码

1 分词 分词是自然语言处理的基础,分词准确度直接决定了后面的词性标注、句法分析、词向量以及文本分析的质量。英文语句使用空格将单词进行分隔,除了某些特定词,如how many,New York等外,大部分情况下不需要考虑分词问题。但有些情况下,没有空格,则需要好的分词算法。…

MacBook使用——彻底卸载并删除软件:NTFS for Mac

问题 之前因MacBook读写NTFS格式移动硬盘&#xff0c;我安装并使用了 Paragon NTFS for Mac &#xff0c;试用期结束后将其从【应用程序】中卸载移除了。但之后每次开机启动时&#xff0c;系统还是会弹出【激活】通知&#xff0c;如下图 解决 Step1、在用户目录下的 Library 目…

simulink汽车动力特性模型

1、内容简介 略 76-可以交流、咨询、答疑 simulink汽车动力特性模型 节气门、Gasoline Engine、离合器、作动器 2、内容说明 略 齿轮半径1 0.06; 齿轮半径2 0.072; 有效齿轮半径 2/3*(radius2^3 - radius1^3)/(radius2^2 - radius1^2); 输入传动比 2.1; 输出传动比 1…

输出三行正三角形--c语言

#include<stdio.h> int main(){int i,j;for(i1;i<3;i){for(j3-i;j>1;j--){printf(" ");}for(j1;j<i*2-1;j){printf("*");}printf("\n");}return 0;} 输出结果&#xff1a;

[MTK6771] android13系统启用OMAPI 支持esim.me

OMAPI是啥&#xff1f;看看谷歌的解释&#xff1a; 说了一大堆懂的人不需要看&#xff0c;不懂的还是看不懂&#xff0c;我就是后者 总之说人话就是&#xff0c;像SIM卡&#xff0c;NFC这类模块需要用到这个东西&#xff0c;那么接着往下看 上层APP想要使用这个OMAPI供应商稳…