示例代码
class Solution {
public:
int findMaxForm(vector<string>& strs, int m, int n) {
int len=strs.size();
vector<vector<vector<int>>> dp(len+1,vector<vector<int>>(m+1,vector<int>(n+1,0)));
int tempZeros,tempOnes;
for(int i=1;i<=len;i++){
tempZeros=0,tempOnes=0;
for(char ch:strs[i-1]){
if(ch=='0'){
tempZeros++;
}else{
tempOnes++;
}
}
//这里的j和k都是从0开始进行计数的,因为要考虑一个字符串中没有0或者没有1的情况
for(int j=0;j<=m;j++){
for(int k=0;k<=n;k++){
if(tempZeros<=j&&tempOnes<=k){
dp[i][j][k]=max(dp[i-1][j][k],dp[i-1][j-tempZeros][k-tempOnes]+1);
}else{
dp[i][j][k]=dp[i-1][j][k];
}
}
}
}
return dp[len][m][n];
}
};
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
- 25.
- 26.
- 27.
- 28.
- 29.
- 30.
效果展示