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

leetcode 474 一和零

一、题目描述

二、解题思路

解法一:深度优先搜索+剪枝(超时)

本题实际上与0/1背包问题类似,即子集问题的变种,可以采用深度优先搜索+剪枝来解决这个问题,对于每一个字符串,只有选择和不选择两种决策。

解法二:动态规划

dp[i][j]表示m=i,n=j时,最大的子集数,对于每一个字符串,只有选择与不选择两种情况,所以dp[i][j]=max(dp[i][j],dp[i-zeros][j-ones]),这就是状态转移方程,依此来写就可以了。

三、代码实现

解法一:深度优先搜索+剪枝(超时)

class Solution {int length;vector<vector<int>> count;
public:int findMaxForm(vector<string>& strs, int m, int n) {//初始化全局变量length=0;//初始化count数组,记录每个字符串中'0'和'1'的个数count.resize(strs.size(),vector<int>(2,0));for(int i=0;i!=strs.size();i++){for(auto ch:strs[i]){if(ch=='0') count[i][0]++;else if(ch=='1') count[i][1]++;}}dfs(strs,0,m,n,0);return length;}void dfs(vector<string>& strs,int start,int m,int n,int currentLength){//递归出口if(start==strs.size()){length=max(length,currentLength);return ;}//当前字符串的'1'和'0'的数量int zeros=count[start][0];int ones=count[start][1];//选if(m>=zeros&&n>=ones)dfs(strs,start+1,m-zeros,n-ones,currentLength+1);//不选dfs(strs,start+1,m,n,currentLength);}
};

解法二:动态规划(可通过)

class Solution {
public:int findMaxForm(vector<string>& strs, int m, int n) {//动态规划//dp[i][j]表示m=i,n=j时,最大子集的长度vector<vector<int>> dp(m+1,vector<int>(n+1,0));for(auto str:strs){int zeros=count(str.begin(),str.end(),'0');int ones=(int)str.size()-zeros;//填写dp数组for(int i=m;i>=zeros;i--)for(int j=n;j>=ones;j--)dp[i][j]=max(dp[i][j],dp[i-zeros][j-ones]+1);}return dp[m][n];}
};

http://www.dtcms.com/a/597774.html

相关文章:

  • ADB点击实战-做一个自动点广告播放领金币的脚本app(下)
  • 系统运维Day06_RSYSLOG系统日志管理
  • LeetCodeHot100| 438.找到字符串中所有字符异位次、和为k 的子数组
  • 网络安全与数字化转型的价值投资
  • 免费网站建设教程厦门建站最新消息
  • 电子辐射能量场的具体过程
  • 住房和城乡规划建设局官方网站士兵突击网站怎么做
  • 文件名精灵2025 v1.0
  • 高端品牌型网站建设店面设计多少钱一个平方
  • git仓库管理
  • SSM基于vuejs的图书管理系统171wx(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
  • Qt 配置Webassemble环境
  • 维力安网站建设公司wordpress 建站 电子书
  • 珠海微信网站上海电商网站开发
  • 成都企业网站的建立网站开发实用技术知识点
  • 网站后台生成html企业培训课程一览表
  • 解锁整车EEA---功能与物理架构的深度剖析
  • 完善EKF可观测性体系:基于ElastAlert2构建k8s智能钉钉日志告警系统
  • 营销网站建设教学我的小程序怎么制作
  • 廊坊网站快速排名优化飓风 网站建设
  • 小迪安全v2023学习笔记(一百四十六讲)—— Webshell篇魔改哥斯拉打乱特征指纹新增后门混淆过云查杀过流量识别
  • 微信如何申请小程序商店公众号微博seo
  • 家居用品:藏在日常里的生活温度
  • 网站片头怎么做网站开发时app打开很慢
  • 利用ARCGIS手搓宗地图详细版
  • Python基础教学:在Python中的迭代器和生成器的区别-由Deepseek产生
  • 哪家网站设计公司好百度快速排名用什
  • 11.10dns作业
  • 湛江制作网站多少钱番禺网站建设品牌好
  • 【OpenCV + VS】OpenCV中Mat对象的创建与赋值操作