当前位置: 首页 > news >正文

01背包问题暴力解法(回溯法)和经典解法

暴力解法(回溯法)

import java.util.Arrays;
import java.util.Scanner;public class Main {private final static int  N = 999;public static int SumValue = 0;public static int SumWeight = 0;public static int OptimalValue = 0;public static int OptimalSolution[] = new int[N];public static int w[] = new int[N];public static int v[] = new int[N];public static int x[] = new int[N];public static int n;public static int c;public static void  backTracking(int t) {if(t>n) {if(SumValue > OptimalValue) {OptimalValue = SumValue;for(int i=1;i<=n;i++)OptimalSolution[i]=x[i];}}else {for(int i=0;i<=1;i++) {x[t]=i;if(i==0) {backTracking(t+1);}else {if(SumValue+w[t]<=c) {SumWeight += w[t];SumValue += v[t];backTracking(t+1);SumValue -= v[t];SumWeight -= w[t];}}}}}public static void main(String[] args) {// TODO Auto-generated method stubScanner sc =new Scanner(System.in);n = sc.nextInt();Arrays.fill(w, 0);Arrays.fill(v, 0);Arrays.fill(x, 0);c = sc.nextInt();for(int i=1;i<=n;i++){int temp = sc.nextInt();w[i]=temp;temp = sc.nextInt();v[i]=temp;}backTracking(1);System.out.print(OptimalValue);}}

二维数组(经典解法) 这里dp[i][j]表示含义是取[0,i]个物品且容量不超过j的最大价值为dp[i][j]

import java.nio.file.Watchable;
import java.util.Scanner;public class 经典解法Test {public static void main(String[] args) {int n;int N = 999;int[][] dp =new int[N][N];Scanner scanner=new Scanner(System.in);n=scanner.nextInt();int c;c=scanner.nextInt();int[] w=new int[N];int[] v = new int[N];for(int i=0;i<n;i++) {int temp=scanner.nextInt();w[i]=temp;temp=scanner.nextInt();v[i]=temp;}for(int i=0;i<n;i++)dp[i][0]=0;for(int i=w[0];i<=c;i++)dp[0][i]=v[0];for(int i=1;i<n;i++) {for(int j=c;j>=0;j--) {if(j>=w[i]) {dp[i][j]=Math.max(dp[i-1][j], dp[i-1][j-w[i]]+v[i]);}else {dp[i][j]=dp[i-1][j];}}}System.out.println(dp[n-1][c]);}
}

一维数组(经典解法)dp[j] 含义是容量不超过j且最大价值为dp[j]

import java.util.Scanner;public class 一维数组 {public static void main(String[] args) {int N=999;int n,c;int[] w= new int[N];int[] v=new int[N];int[] dp=new int[N];Scanner scanner=new Scanner(System.in);n=scanner.nextInt();c=scanner.nextInt();for(int i=0;i<n;i++) {int temp=scanner.nextInt();w[i]=temp;temp=scanner.nextInt();v[i]=temp;}dp[0]=0;for(int i=0;i<n;i++) {for(int j=c;j>=w[i];j--)dp[j]=Math.max(dp[j], dp[j-w[i]]+v[i]);}System.out.println(dp[c]);}
}

相关文章:

01背包问题暴力解法(回溯法)和经典解法

暴力解法&#xff08;回溯法&#xff09; import java.util.Arrays; import java.util.Scanner;public class Main {private final static int N 999;public static int SumValue 0;public static int SumWeight 0;public static int OptimalValue 0;public static int O…...

K8S的CKA考试环境和题目

CKA考试这几年来虽然版本在升级&#xff0c;但题目一直没有大的变化&#xff0c;通过K8S考试的方法就是在模拟环境上反复练习&#xff0c;通过练习熟悉考试环境和考试过程中可能遇到的坑。这里姚远老师详细向大家介绍一下考试的环境和题目&#xff0c;需要详细资料的同学请在文…...

docker清理

1. 查看docker 磁盘占用 docker system df 2. 参考&#xff1a; Docker磁盘占用与清理问题_docker system prune_蓝鲸123的博客-CSDN博客...

队列和栈两种数据结构的区别和Python实现

队列和栈是两种数据结构,其内部都是按照固定顺序来存放变量的,二者的区别在于对数据的存取顺序 栈是最后存入的数据最先取出,即后进先出 队列是先存入的数据最先取出,即先进先出 Python实现栈 使用append()方法存入数据,使用pop()方法读取数据 # 定义一个空列表(当做栈使…...

java 企业工程管理系统软件源码+Spring Cloud + Spring Boot +二次开发+ MybatisPlus + Redis

鸿鹄工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离构建工程项目管理系统 1. 项目背景 一、随着公司的快速发展&#xff0c;企业人员和经营规模不断壮大。为了提高工程管理效率、减轻劳动强度、提高信息处理速度和准确性&#xff0c;公司对内部工程管…...

使用Smartctl脚本输入当前所有磁盘的状态

一、安装Smartctl yum install smartmontools 二、写一个脚本输出当前所有磁盘的状态并且按名称分别写入到文件中 #!/bin/bashfor dev in $(lsblk -l | grep disk | awk {print $1}) doecho "检测磁盘 $dev"smartctl -a /dev/$dev > $dev.smartctl done 以下是这…...

数学建模之插值法

目录 1 插值法概述2 插值法原理3 拉格朗日插值4 牛顿插值5 三次Hermite插值&#xff08;重点&#xff09;6 三次样条插值&#xff08;重点&#xff09;7 各种插值法总结8 n 维数据的插值9 插值法拓展10 课后作业 1 插值法概述 数模比赛中&#xff0c;常常需要根据已知的函数点进…...

rhcsa学习2(vim、创建管理用户、组等)

创建、查看和编辑文本文件 重定向符号 > 进程使用称为文件描述符的编号通道来获取输入并发送输出。所有进程在开始时至少要有三个文件描述符。如果程序打开连接至其他文件的单独连接&#xff0c;则可能要使用更大编号的文件描述符 上述通过通道1去写入&#xff0c;且写入的文…...

【使用教程】Github(自用)

1.下载Git⼯具 使在windows 命令⾏下边可以输⼊这两个命令&#xff1a; gitssh-keygen 2.配置git信息&#xff1a; 在命令⾏⾥输⼊&#xff1a; $ git config --global user.name “你在Github上注册的账号” $ git config --global user.email 你在Github上注册的邮箱 3. c…...

typeScript学习笔记(一)

学习资源来自&#xff1a; 类与接口 TypeScript 入门教程 (xcatliu.com) 一.TypeScript的安装和运行 1.安装TypeScript 通过npm&#xff08;Node.js包管理器&#xff09;安装Visual Studio的TypeScript插件:(Visual Studio 2017和Visual Studio 2015 Update 3默认包含了Ty…...

第4章:网络层

文章目录 一、概述和功能2.SDN二、转发1.IP数据报(1)IP数据报的首部字段(2)IP数据报的分片2.IPv4地址:<网络号>,<主机号>3.IP编址 (三个历史阶段)(1)分类IP地址①特殊IP地址②私有IP地址③网络地址转换NAT:导致IP地址变化MAC地址、IP地址变化问题(2)子网划分与子…...

C高级day1 shell 指令的补充学习

使用cut截取出Ubuntu用户的家目录&#xff0c;要求&#xff1a;不能使用":"作为分割 2.思维导图...

灰度变换与空间滤波

灰度变换与空间滤波 背景知识 空间域指包含图像像素的平面&#xff0c;灰度变换与空间滤波均在空间域进行&#xff0c;即直接在图像像素上操作&#xff0c;表示为 g ( x , y ) T [ f ( x , y ) ] g(x,y)T[f(x,y)] g(x,y)T[f(x,y)] &#xff0c;其中 T T T 是在点 ( x , y…...

敏感接口权限校验

前端校验 &#xff08;从前端或者从token里面拿一下&#xff09;&#xff0c;看一下用户有没有这个页面的权限&#xff08;但是一般不用&#xff0c;因为nodejs也可以写后端&#xff0c;但是放到前端去校验不安全&#xff09; 后端校验 需要梳理敏感数据接口&#xff0c;将这…...

[LeetCode周赛复盘] 第 112场双周赛20230903

[LeetCode周赛复盘] 第 112场双周赛20230903 一、本周周赛总结2839. 判断通过操作能否让字符串相等 I1. 题目描述2. 思路分析3. 代码实现 2840. 判断通过操作能否让字符串相等 II1. 题目描述2. 思路分析3. 代码实现 2841. 几乎唯一子数组的最大和1. 题目描述2. 思路分析3. 代码…...

Spark【RDD编程(二)RDD编程基础】

前言 接上午的那一篇&#xff0c;下午我们学习剩下的RDD编程&#xff0c;RDD操作中的剩下的转换操作和行动操作&#xff0c;最好把剩下的RDD编程都学完。 Spark【RDD编程&#xff08;一&#xff09;RDD编程基础】 RDD 转换操作 6、distinct 对 RDD 集合内部的元素进行去重…...

【2023最新版】MySQL安装教程

目录 一、MySQL简介 二、MySQL安装 1. 官网 2. 下载 3. 安装 4. 配置环境变量 配置前 配置中 配置后 5. 验证 一、MySQL简介 MySQL是一种开源的关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;它被广泛用于存储和管理结构化数据。MySQL提供了强大的功…...

关于mysql数据文件损坏导致的mysql无法启动的问题

环境 rocky linux 9 &#xff08;跟centos几乎一模一样&#xff09; myqsl 8.0&#xff0c; 存储引擎使用innodb 问题描述 1. 服务器异常关机&#xff0c;重启启动后发现mysql无法连接&#xff0c;使用命令查看mysql状态&#xff1a; systemctl status mysqld 发现mysql服…...

深度学习之视频分类项目小记

写在前面&#xff0c;最近一阵在做视频分类相关的工作&#xff0c;趁有时间来记录一下。本文更注重项目实战与落地&#xff0c;而非重点探讨多模/视频模型结构的魔改 零、背景 目标&#xff1a;通过多模态内容理解技术&#xff0c;构建视频层级分类体系原技术方案&#xff1a…...

pandas(四十三)Pandas实现复杂Excel的转置合并

一、Pandas实现复杂Excel的转置合并 读取并筛选第一张表 df1 pd.read_excel("第一个表.xlsx") df1# 删除无用列 df1 df1[[股票代码, 高数, 实际2]].copy() df1df1.dtypes股票代码 int64 高数 float64 实际2 int64 dtype: object读取并处理第二张表…...

【Linux】shell脚本忽略错误继续执行

在 shell 脚本中&#xff0c;可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行&#xff0c;可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令&#xff0c;并忽略错误 rm somefile…...

AI Agent与Agentic AI:原理、应用、挑战与未来展望

文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例&#xff1a;使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例&#xff1a;使用OpenAI GPT-3进…...

阿里云ACP云计算备考笔记 (5)——弹性伸缩

目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...

为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?

在建筑行业&#xff0c;项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升&#xff0c;传统的管理模式已经难以满足现代工程的需求。过去&#xff0c;许多企业依赖手工记录、口头沟通和分散的信息管理&#xff0c;导致效率低下、成本失控、风险频发。例如&#…...

屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!

5月28日&#xff0c;中天合创屋面分布式光伏发电项目顺利并网发电&#xff0c;该项目位于内蒙古自治区鄂尔多斯市乌审旗&#xff0c;项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站&#xff0c;总装机容量为9.96MWp。 项目投运后&#xff0c;每年可节约标煤3670…...

MySQL用户和授权

开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务&#xff1a; test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...

初探Service服务发现机制

1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能&#xff1a;服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源&#xf…...

【LeetCode】算法详解#6 ---除自身以外数组的乘积

1.题目介绍 给定一个整数数组 nums&#xff0c;返回 数组 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法&#xff0c;且在 O…...

Oracle11g安装包

Oracle 11g安装包 适用于windows系统&#xff0c;64位 下载路径 oracle 11g 安装包...

在golang中如何将已安装的依赖降级处理,比如:将 go-ansible/v2@v2.2.0 更换为 go-ansible/@v1.1.7

在 Go 项目中降级 go-ansible 从 v2.2.0 到 v1.1.7 具体步骤&#xff1a; 第一步&#xff1a; 修改 go.mod 文件 // 原 v2 版本声明 require github.com/apenella/go-ansible/v2 v2.2.0 替换为&#xff1a; // 改为 v…...