class Solution {
public:
int findMaxForm(vector<string>& strs, int m, int n) {
//明确dp数组含义,dp[ling][yi]代表当有ling个0和yi个一的时候的最长子集
//初始化dp数组
vector<vector<int>> dp(m+1, vector<int>(n+1,0));
//初始化dp数组
for(string s:strs){
int zero_num = 0;
int one_num = 0;
for(char c:s){
if(c=='0') zero_num++;
else one_num++;
}
for(int i = m; i >= zero_num; i--){
for(int j = n; j>= one_num; j--){
dp[i][j] = max(dp[i][j], dp[i-zero_num][j-one_num]+1);
}
}
}
return dp[m][n];
}
};
6.28(474,动态规划难,今天做了一道)
最新推荐文章于 2024-10-15 19:28:18 发布