在计算机界中,我们总是追求用有限的资源获取最大的收益。

现在,假设你分别支配着 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. 一和零(动态规划)相关推荐

  1. leetcode474. 一和零

    一:论语 二:timi 三:上码 class Solution {public:/**思路:1.确定动态规划是因为满足的结果的答案不唯一 我们要选取最优的2.联系背包问题是因为 子集中的元素都是只是用 ...

  2. 【代码随想录】-动态规划专题

    文章目录 理论基础 斐波拉契数列 爬楼梯 使用最小花费爬楼梯 不同路径 不同路径 II 整数拆分 不同的二叉搜索树 背包问题--理论基础 01背包 二维dp数组01背包 一维数组(滚动数组) 装满背包 ...

  3. Leetcode动态规划专题(共38道)

    某一问题有很多重叠子问题 每一状态一定由上一状态推导出来 而贪心没有状态推导,而是直接选局部最优 解决方式: 确定dp数组(dp table)以及下标的含义 确定递推公式 dp数组如何初始化 确定遍历 ...

  4. Java-算法-动态规划-背包问题

    看完本篇文章可以再多练习相似题目 算法-动态规划-背包问题-附一 ​​​​​​​ 一. 背包问题介绍 1. 最原始的背包问题 给定一组物品,每种物品都有自己的重量和价格,在限定的总重量内,我们如何选择 ...

  5. 从自动贩卖机找零看Python中的动态规划问题

    原文:http://www.jianshu.com/p/144db81341a3 从自动贩卖机找零看Python中的动态规划问题 问题描述 假设在某国存在[1,x1,x2,x3,...,xn]多种货币 ...

  6. java动态规划凑硬币问题,详解动态规划最少硬币找零问题--JavaScript实现

    硬币找零问题是动态规划的一个经典问题,其中最少硬币找零是一个变种,本篇将参照上一篇01背包问题的解题思路,来详细讲解一下最少硬币找零问题.如果你需要查看上一篇,可以点击下面链接: 详解动态规划01背包 ...

  7. 变种 背包问题_动态规划入门——传说中的零一背包问题

    今天是周三算法与数据结构专题的第12篇文章,动态规划之零一背包问题.在之前的文章当中,我们一起探讨了二分.贪心.排序和搜索算法,今天我们来看另一个非常经典的算法--动态规划.在acm-icpc竞赛领域 ...

  8. python 最小硬币数_Python之动态规划(最少硬币数找零)

    完整代码: # 动态规划最少硬币数找零 def dpMakeChange(coinValueList, change, minCoins, coinsUsed): for cents in range ...

  9. c++ 多重背包状态转移方程_动态规划入门——详解经典问题零一背包

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是周三算法与数据结构专题的第12篇文章,动态规划之零一背包问题. 在之前的文章当中,我们一起探讨了二分.贪心.排序和搜索算法,今天我们来 ...

最新文章

  1. Linux的shell变量
  2. codeforces 547B【单调栈】
  3. 恐怖与暴力美学 + 妖魔化:《人皮客栈》观看笔记
  4. C++ opengl 放置摄像机
  5. Python产生随机数(转)
  6. “Max“ stands for big
  7. 真假签到题(签到+打表)
  8. Java之IO,BIO,NIO,AIO知多少?【请按正文网址阅读】
  9. Mac adobe PS、AI、PR、AN安装包
  10. 项目-基于SSM的订餐管理系统
  11. 你知道物联网技术都有哪些吗?
  12. WaitForSingleObject、WaitForMultipleObjects假死,永远等待的问题
  13. 祈澈姑娘:为自己代盐
  14. 基于MXNET实现的年龄性别识别
  15. c语言cout函数,c++中cin与cout 详解
  16. 12:计算2的N次方
  17. UML在软件工程中的使用 建模—类图
  18. c语言乒乓球比赛相关的拓展程序,乒乓球编排软件.pdf
  19. GitHub是什么?怎么用?Git是什么?怎么用?
  20. 微服务轮子项目(45) -Jenkins自动化部署

热门文章

  1. 最强Android教程!2021年Android面经分享,大厂面经合集
  2. go build编译不同环境
  3. gitlab中的CI
  4. 浏览器兼容CSS渐进增强 VS 优雅降级如何选择
  5. jQuery datepicker和jQuery validator 共用时bug
  6. (hdu 简单题 128道)平方和与立方和(求一个区间的立方和和平方和)
  7. Tomcat配置JNDI数据源
  8. java正则表达式提取字符串中的数字
  9. 斗地主你什么时候才会托管?(.NET中的托管于非托管)
  10. 可工作的软件胜过面面俱到的文档