leetcode474. 一和零(动态规划)
在计算机界中,我们总是追求用有限的资源获取最大的收益。
现在,假设你分别支配着 m 个 0 和 n 个 1。另外,还有一个仅包含 0 和 1 字符串的数组。
你的任务是使用给定的 m 个 0 和 n 个 1 ,找到能拼出存在于数组中的字符串的最大数量。每个 0 和 1 至多被使用一次。
注意:
给定 0 和 1 的数量都不会超过 100。
给定字符串数组的长度不会超过 600。
示例 1:
输入: Array = {“10”, “0001”, “111001”, “1”, “0”}, m = 5, n = 3
输出: 4
解释: 总共 4 个字符串可以通过 5 个 0 和 3 个 1 拼出,即 “10”,“0001”,“1”,“0” 。
解题思路
数组含义:dp[i][j]给定i个0和j个1能拼出存在于数组中的字符串的最大数量。
状态转移: dp[i][j]= Math.max(dp[i-c[0]][j-c[1]]+1,dp[i][j]) 拿当前字符串或者不拿
代码
class Solution {public int findMaxForm(String[] strs, int m, int n) {int[][] dp=new int[m+1][n+1];int[][] helper=new int[strs.length][2];for(int i=0;i<strs.length;i++)for(char c:strs[i].toCharArray())if(c=='0') helper[i][0]++;else helper[i][1]++;for (int[] c:helper)for(int i=m;i>=c[0];i--)for (int j=n;j>=c[1];j--)dp[i][j]= Math.max(dp[i-c[0]][j-c[1]]+1,dp[i][j]);return dp[m][n];}
}
leetcode474. 一和零(动态规划)相关推荐
- leetcode474. 一和零
一:论语 二:timi 三:上码 class Solution {public:/**思路:1.确定动态规划是因为满足的结果的答案不唯一 我们要选取最优的2.联系背包问题是因为 子集中的元素都是只是用 ...
- 【代码随想录】-动态规划专题
文章目录 理论基础 斐波拉契数列 爬楼梯 使用最小花费爬楼梯 不同路径 不同路径 II 整数拆分 不同的二叉搜索树 背包问题--理论基础 01背包 二维dp数组01背包 一维数组(滚动数组) 装满背包 ...
- Leetcode动态规划专题(共38道)
某一问题有很多重叠子问题 每一状态一定由上一状态推导出来 而贪心没有状态推导,而是直接选局部最优 解决方式: 确定dp数组(dp table)以及下标的含义 确定递推公式 dp数组如何初始化 确定遍历 ...
- Java-算法-动态规划-背包问题
看完本篇文章可以再多练习相似题目 算法-动态规划-背包问题-附一 一. 背包问题介绍 1. 最原始的背包问题 给定一组物品,每种物品都有自己的重量和价格,在限定的总重量内,我们如何选择 ...
- 从自动贩卖机找零看Python中的动态规划问题
原文:http://www.jianshu.com/p/144db81341a3 从自动贩卖机找零看Python中的动态规划问题 问题描述 假设在某国存在[1,x1,x2,x3,...,xn]多种货币 ...
- java动态规划凑硬币问题,详解动态规划最少硬币找零问题--JavaScript实现
硬币找零问题是动态规划的一个经典问题,其中最少硬币找零是一个变种,本篇将参照上一篇01背包问题的解题思路,来详细讲解一下最少硬币找零问题.如果你需要查看上一篇,可以点击下面链接: 详解动态规划01背包 ...
- 变种 背包问题_动态规划入门——传说中的零一背包问题
今天是周三算法与数据结构专题的第12篇文章,动态规划之零一背包问题.在之前的文章当中,我们一起探讨了二分.贪心.排序和搜索算法,今天我们来看另一个非常经典的算法--动态规划.在acm-icpc竞赛领域 ...
- python 最小硬币数_Python之动态规划(最少硬币数找零)
完整代码: # 动态规划最少硬币数找零 def dpMakeChange(coinValueList, change, minCoins, coinsUsed): for cents in range ...
- c++ 多重背包状态转移方程_动态规划入门——详解经典问题零一背包
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是周三算法与数据结构专题的第12篇文章,动态规划之零一背包问题. 在之前的文章当中,我们一起探讨了二分.贪心.排序和搜索算法,今天我们来 ...
最新文章
- Linux的shell变量
- codeforces 547B【单调栈】
- 恐怖与暴力美学 + 妖魔化:《人皮客栈》观看笔记
- C++ opengl 放置摄像机
- Python产生随机数(转)
- “Max“ stands for big
- 真假签到题(签到+打表)
- Java之IO,BIO,NIO,AIO知多少?【请按正文网址阅读】
- Mac adobe PS、AI、PR、AN安装包
- 项目-基于SSM的订餐管理系统
- 你知道物联网技术都有哪些吗?
- WaitForSingleObject、WaitForMultipleObjects假死,永远等待的问题
- 祈澈姑娘:为自己代盐
- 基于MXNET实现的年龄性别识别
- c语言cout函数,c++中cin与cout 详解
- 12:计算2的N次方
- UML在软件工程中的使用 建模—类图
- c语言乒乓球比赛相关的拓展程序,乒乓球编排软件.pdf
- GitHub是什么?怎么用?Git是什么?怎么用?
- 微服务轮子项目(45) -Jenkins自动化部署