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

代码随想录刷题第四十二天| 01背包问题,你该了解这些! ● 01背包问题,你该了解这些! 滚动数组 ● 416. 分割等和子集

代码随想录刷题第四十二天

今天是0-1背包问题,掌握了套路就不难了~~~

0-1背包问题理论基础(二维数组篇)卡码网第46题

题目思路:

在这里插入图片描述

代码实现:

input_line = input()  # 读取一行输入
mn = input_line.split()
m, n = int(mn[0]), int(mn[1])
input_line = input().split()
weight = [int(input_str) for input_str in input_line]
input_line = input().split()
value = [int(input_str) for input_str in input_line]dp = [[0 for _ in range(n+1)] for _ in range(m)]if weight[0] <= n:for j in range(weight[0], n+1):dp[0][j] = value[0]for i in range(1, m):for j in range(1, n+1):if j < weight[i]:dp[i][j] = dp[i-1][j]else:dp[i][j] = max(dp[i-1][j], dp[i-1][j-weight[i]]+value[i])print(dp[m-1][n])

0-1背包问题理论基础(一维数组篇)卡码网第46题

题目思路:

在这里插入图片描述

代码实现:

input_line = input()  # 读取一行输入
mn = input_line.split()
m, n = int(mn[0]), int(mn[1])
input_line = input().split()
weight = [int(input_str) for input_str in input_line]
input_line = input().split()
value = [int(input_str) for input_str in input_line]dp = [0 for _ in range(n+1)]for i in range(m):for j in range(n, 0, -1):if j < weight[i]:dp[j] = dp[j]else:dp[j] = max(dp[j], dp[j-weight[i]]+value[i])print(dp[n])

分割等和子集 (LC 416)

题目思路:

在这里插入图片描述

代码实现:

class Solution:def canPartition(self, nums: List[int]) -> bool:allsum = sum(nums)if allsum%2 == 1:return Falsetarget = allsum//2dp = [[0 for _ in range(target+1)] for _ in range(len(nums))]if nums[0]<=target:for j in range(nums[0], target+1):dp[0][j] = nums[0]for i in range(1, len(nums)):for j in range(1, target+1):if nums[i] > j:dp[i][j] = dp[i-1][j]else:dp[i][j] = max(dp[i-1][j], dp[i-1][j-nums[i]]+nums[i])if dp[len(nums)-1][target] == target:return Trueelse:return False
http://www.lryc.cn/news/275602.html

相关文章:

  • 前端开发加速器:十个VSCode插件精选
  • 剑指offer面试题3 二维数组中的查找
  • 【2023年中国高校大数据挑战赛 】赛题 B DNA 存储中的序列聚类与比对 Python实现
  • 力扣383.赎金信 -- 哈希表
  • GeoServer发布地图服务(WMS、WFS)
  • C语言——结构体
  • 基于多反应堆的高并发服务器【C/C++/Reactor】(中)Buffer的创建和销毁、扩容、写入数据
  • 【Linux】常用的基本命令指令①
  • 活动运营常用的ChatGPT通用提示词模板
  • SpringBoot 中实现订单30分钟自动取消的策略
  • 像专家一样使用TypeScript映射类型
  • Golang 结构体
  • 服务器运行状况监控工具
  • 2022年全国职业院校技能大赛软件测试赛题卷②—自动化测试解析报告(含术语)
  • 497 蓝桥杯 成绩分析 简单
  • 一、HTML5简介
  • 视频云存储/视频智能分析平台EasyCVR在麒麟系统中无法启动该如何解决?
  • 前端性能优化之图像优化
  • 微信小程序封装vant 下拉框select 单选组件
  • c语言试卷
  • 文献阅读:Sparse Low-rank Adaptation of Pre-trained Language Models
  • NCC基础开发技能培训
  • Flink中的状态管理
  • 【linux】线程互斥
  • 机器学习原理到Python代码实现之LinearRegression
  • Hive SQL / SQL
  • 程序媛的mac修炼手册--MacOS系统更新升级史
  • 【数据库原理】(9)SQL简介
  • 第二百五十二回
  • Leetcode 3701 · Find Nearest Right Node in Binary Tree (遍历和BFS好题)