474. Ones and Zeroes
来源:互联网 发布:马尔萨斯陷阱 知乎 编辑:程序博客网 时间:2024/05/22 17:50
In the computer world, use restricted resource you have to generate maximum benefit is what we always want to pursue.
For now, suppose you are a dominator of m 0s
andn 1s
respectively. On the other hand, there is an array with strings consisting of only0s
and 1s
.
Now your task is to find the maximum number of strings that you can form with givenm 0s
and n 1s
. Each 0
and 1
can be used at most once.
Note:
- The given numbers of
0s
and1s
will both not exceed100
- The size of given string array won't exceed
600
.
Example 1:
Input: Array = {"10", "0001", "111001", "1", "0"}, m = 5, n = 3Output: 4Explanation: This are totally 4 strings can be formed by the using of 5 0s and 3 1s, which are “10,”0001”,”1”,”0”
Example 2:
Input: Array = {"10", "0", "1"}, m = 1, n = 1Output: 2Explanation: You could form "10", but then you'd have nothing left. Better form "0" and "1".
用一二维数组dp, dp[i][j]表示由I个0, j个1组成的字符串的个数, 遍历字符串数组strs, 每次遍历, 统计字符串的0、1个数zeros、ones, 用dp[I - zeros][j - ones]表示还能拼成字符串的个数, 然后将该个数加1, 再于原dp[i][j]比较大小, 递推关系为: dp[i][j] = max(dp[i][j], dp[I - zeros][j - ones] + 1).
class Solution {public:int findMaxForm(vector<string>& strs, int m, int n) {vector<vector<int>> dp(m + 1, vector<int>(n + 1, 0));for (vector<string>::iterator itr1 = strs.begin(); itr1 != strs.end(); ++itr1){int ones = 0;int zeros = 0;for (string::iterator itr2 = itr1->begin(); itr2 != itr1->end(); ++itr2){if (*itr2 == '0') ++zeros;else ++ones;}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];}};
阅读全文
0 0
- 474. Ones and Zeroes
- 474. Ones and Zeroes
- 474. Ones and Zeroes
- 474. Ones and Zeroes
- 474. Ones and Zeroes
- 474. Ones and Zeroes
- 474. Ones and Zeroes
- 474. Ones and Zeroes
- 474. Ones and Zeroes
- 474. Ones and Zeroes
- 474. Ones and Zeroes
- 474. Ones and Zeroes
- 474. Ones and Zeroes
- 474. Ones and Zeroes
- 474. Ones and Zeroes
- 474. Ones and Zeroes
- 474. Ones and Zeroes
- 474. Ones and Zeroes
- Android做一个启动界面
- linux下c++读取串口
- 列表
- (二)jQuery+ajax与servlet的交互
- 【DRP】——图片上传(第一种)
- 474. Ones and Zeroes
- 题目管理 1182: 硬币兑换
- 超大规模集成电路 VLSI
- 23种Java设计模式_单例模式_1
- Eclipse插件开发(四)代码设计
- 自适应网页(响应式布局)+弹性布局
- 第一篇博客 分析bootloader详解;
- [母函数]HDU 1521——排列组合
- IC设计基础系列之CDC篇6:从CMOS到触发器(一)