Leetcode 474 - Ones and Zeroes(01背包)
来源:互联网 发布:中国技术贸易数据 编辑:程序博客网 时间:2024/06/09 15:13
题意
给定m个0个n个1,以及一堆字符串数组strs,要求你用这个m个0和n个1,去构成strs里面的字符串,求能够得到的最多字符串数目,可以剩余。
思路
就01背包,考虑第i个字符串是否选择。
状态表示:
转移方程:
细节
滚动数组优化空间
m和n可以剩余
代码
const int maxn = 1000 + 5;const int maxm = 100000 + 5;int d[2][maxn][maxn];int Z[maxm], O[maxm];class Solution {public: int findMaxForm(vector<string>& strs, int m, int n) { int nn = strs.size(); if (nn == 0) return 0; memset(Z, 0, sizeof(Z)); memset(O, 0, sizeof(O)); memset(d, 0, sizeof(d)); for (int i = 0; i < strs.size(); i++) { for (int j = 0; j < strs[i].length(); j++) { if (strs[i][j] == '0') Z[i]++; else O[i]++; } } d[0][Z[0]][O[0]] += (Z[0] <= m && O[0] <= n ? 1 : 0); int t = 0, res = d[0][Z[0]][O[0]]; for (int i = 1; i < nn; i++, t ^= 1) { for (int j = 0; j <= m; j++) { for (int k = 0; k <= n; k++) { d[t ^ 1][j][k] = d[t][j][k]; if (j >= Z[i] && k >= O[i]) d[t ^ 1][j][k] = max(d[t][j - Z[i]][k - O[i]] + 1, d[t][j][k]); res = max(res, d[t ^ 1][j][k]); } } } return res; }};
0 0
- Leetcode 474 - Ones and Zeroes(01背包)
- 01背包问题(leetcode 416. Partition Equal Subset Sum & leetcode 474 ones and zeroes)
- Leetcode-474-Ones and Zeroes
- LeetCode 474 Ones and Zeroes
- Leetcode 474 Ones and Zeroes
- Leetcode 474 Ones and Zeroes
- LeetCode: Ones and Zeroes
- [LeetCode] Ones and Zeroes
- LeetCode 474 Ones and Zeroes 题解
- leetcode 474. Ones and Zeroes 动态规划DP + 背包问题
- LeetCode 474. Ones and Zeroes
- [leetcode] 474. Ones and Zeroes
- LeetCode 474. Ones and Zeroes
- Leetcode-474. Ones and Zeroes
- [LeetCode]474. Ones and Zeroes
- 【LeetCode】 474. Ones and Zeroes
- LeetCode 474. Ones and Zeroes
- [leetcode]474. Ones and Zeroes
- ROS(5)服务机制
- Codeforces Round #394(Div. 2)A.Dasha and Stairs【水题】
- Tango 开发指南 — 区域学习原理
- React+Redux实现简单的待办事项列表ToDoList
- CountDownLatch详解
- Leetcode 474 - Ones and Zeroes(01背包)
- 蓝桥杯 九宫重排
- 【VScode】VScode 调用浏览器预览HTML (windows+ubuntu方法)
- ef操作基类示例
- Appium 新手贴:Windows 平台上的使用 Python 语言实现 appium 自动化程序 for Android (完整版)
- Markdown语法测试1
- Java 的两种重要机制
- Codeforces Round #394(Div. 2)B. Dasha and friends【思维+暴力】
- 如何使用EA画ER图?