示例代码

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.

效果展示

LeetCode---474. 一和零(不要忘了考虑一个字符串中没有0或者没有1的情况,也就是m或者n为0的情况)_职场和发展


LeetCode---474. 一和零(不要忘了考虑一个字符串中没有0或者没有1的情况,也就是m或者n为0的情况)_示例代码_02