动态规划--一和零

chatgpt/2023/9/26 14:19:25

下午做力扣上的动态规划添加链接描述,做了两三个小时才通过了。把思路简单概括。
首先创建出一个三维dp数组,在每个维度上的第0维进行初始化,我的问题一直出在初始化上面,三维比二维感觉要复杂不少。状态转移方程是一个套话,做多了直接写出来了。

class Solution(object):def findMaxForm(self, strs, m, n):""":type strs: List[str]:type m: int:type n: int:rtype: int"""def element(strd):zero = 0one = 0for i in strd:if i == "0":zero = zero + 1elif i == "1":one = one + 1return zero, onedp = [[[None] * (n + 1) for _ in range(m + 1)] for _ in range(len(strs))]dp[0][0][0] = 0for i in range(1, len(strs)):dp[i][0][0] = 0for i in range(0, len(strs)):for j in range(1, n + 1):zero, one = element(strs[i])if zero == 0 and one <= j:if i != 0:dp[i][0][j] = max(dp[i - 1][0][j], dp[i - 1][0][j - one]+1)else:dp[i][0][j] = 1else:if i==0:dp[i][0][j] = 0else:dp[i][0][j] = dp[i-1][0][j]for i in range(0, len(strs)):for j in range(1, m + 1):zero, one = element(strs[i])if one == 0 and zero <= j:if i != 0:dp[i][j][0] = max(dp[i - 1][j][0], dp[i - 1][j - zero][0]+1)else:dp[i][j][0] = 1else:if i==0:dp[i][j][0] = 0else:dp[i][j][0] = dp[i-1][j][0]for i in range(0, m + 1):for j in range(0, n + 1):zero, one = element(strs[0])if zero <= i and one <= j:dp[0][i][j] = 1else:dp[0][i][j] = 0for i in range(1, len(strs)):zero, one = element(strs[i])for j in range(1, m + 1):for k in range(1, n + 1):if j >= zero and k >= one:dp[i][j][k] = max(dp[i - 1][j][k], dp[i - 1][j - zero][k - one] + 1)else:dp[i][j][k] = dp[i - 1][j][k]return dp[len(strs) - 1][m][n]

舞台再大,没有勇气上台也永远是个观众。

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

如若内容造成侵权/违法违规/事实不符,请联系郑州代理记账网进行投诉反馈,一经查实,立即删除!

相关文章

NPP及碳源、碳汇模拟,python蒸散发与植被总初级生产力估算

CASA模型是一个基于过程的遥感模型(Potteret al&#xff0c;1993&#xff1b;Potter et al&#xff0c;1994)&#xff0c;耦合了生态系统生产力和土壤碳、氮通量&#xff0c;由网格化的全球气候、辐射、土壤和遥感植被指数数据集驱动。模型包括土壤有机物、微量气体通量、养分利…

【Android】APP电量优化学习笔记

电量优化原因 电量优化在 Android 开发中非常重要&#xff0c;原因如下&#xff1a; 用户体验&#xff1a; 电池续航时间是用户在使用移动设备时非常关注的因素之一。通过进行电量优化&#xff0c;可以延长设备的电池寿命&#xff0c;使用户能够更长时间地使用设备而不必频繁…

UG\NX二次开发 实现预览和取消预览

文章作者&#xff1a;里海 来源网站&#xff1a;https://blog.csdn.net/WangPaiFeiXingYuan 简介&#xff1a; 介绍两种方法。一是先创建特征&#xff0c;记录创建的特征&#xff0c;取消预览时删除这些特征。另一种方法是在创建特征前Set_mark&#xff0c;取消预览就undo_to_m…

python模拟加密爬取诸葛

用python模拟代码加密逻辑 获取arg1def get_arg1(arg):_0x4b082b [0xf, 0x23, 0x1d, 0x18, 0x21, 0x10, 0x1, 0x26, 0xa, 0x9, 0x13, 0x1f, 0x28, 0x1b, 0x16, 0x17, 0x19, 0xd,0x6, 0xb, 0x27, 0x12, 0x14, 0x8, 0xe, 0x15, 0x20, 0x1a, 0x2, 0x1e, 0x7, 0x4, 0x11, 0x5, 0x3…

idea 里 controller service impl mapper xml 切换跳转快捷键

首先在controller层&#xff0c;对着接口点方法的方法上按着ctrl和鼠标左键&#xff0c;你会进入service层。 对着方法ctrlaltb不按鼠标&#xff0c;你会进入impl层。service层的方法上按ctrl和鼠标左键会回到controller&#xff0c;ctrlaltb不按鼠标也会进入到impl层,impl上的…

python小游戏课程设计报告,python游戏课程设计报告

大家好&#xff0c;给大家分享一下python2048游戏课程设计报告&#xff0c;很多人还不知道这一点。下面详细解释一下。现在让我们来看看&#xff01;

第一百一十九天学习记录:感谢CSDN对一个大龄程序员的鼓励

在经历了一百多天的学习之后&#xff0c;不仅感觉学习之路道阻且长&#xff0c;反而因为好多需要学习的东西而开始有点士气低迷&#xff0c;结果CSDN官方的一条私信再次鼓舞了我。 我在坚持平均每天写一篇学习记录。结果没想到居然能拿到CSDN活动的奖励。 这无疑是对我持续学习…

测试开发人员如何进行局部探索性测试?一张图告诉你

我们都知道全局探索性测试的漫游测试法&#xff0c;也知道局部探索性测试可以从用户输入、状态、代码路径、用户数据和执行环境测试着手点。 那么&#xff0c;如果我们能够获取开发代码&#xff0c;我们怎么从代码入手&#xff0c;进行具体的局部探索性测试呢&#xff1f; 简单…
推荐文章