本文主要是介绍代码随想录Leetcode474. 一和零,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目:
代码(首刷看解析 2024年2月26日)
class Solution {
public:// 二维 0 1背包int findMaxForm(vector<string>& strs, int m, int n) {// 1 二维 [i]表示 0 的个数,上限m; [j]表示 1 的个数,上限nvector<vector<int>> dp(m + 1, vector<int>(n + 1, 0));// 2 初始化 TODO:dp[0][0] = 0;// 3 遍历 TODO:倒序遍历[i][j]for (auto str : strs) {int zeroNum = 0;int oneNum = 0;for (int it : str) {if (it == '0') zeroNum++;else if(it == '1')oneNum++;}cout<<"zero:"<<zeroNum<<" one:"<<oneNum<<endl;for (int i = m; i >= zeroNum; --i) {for (int j = n; j >= oneNum; --j) {dp[i][j] = max(dp[i][j], dp[i - zeroNum][j - oneNum] + 1);cout<<"dp["<<i<<"]"<<"["<<j<<"]:"<<dp[i][j]<<" ";}cout<<endl;}cout<<"___________________________________"<<endl;}return dp[m][n];// 4 递推公式 dp[i][j] = max(dp[i - zeroNum][j - oneNum], // dp[i - zeroNum][j - oneNum] + 1);}
};
这篇关于代码随想录Leetcode474. 一和零的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!