comefrom: <awangdev>Ones and Zeroes_3.java
code: public int findMaxForm(String[] strs, int m, int n) {
          if (strs == null || strs.length == 0 || (m == 0 && n == 0)) {
              return 0;
          }
          int len = strs.length;
          int[][][] dp = new int[m + 1][n + 1][len + 1];
  
          for (int i = 0; i <= m; i++) {
              for (int j = 0; j <= n; j++) {
                  for (int k = 0; k <= len; k++) {
                      if (k == 0 || (i == 0 && j == 0)) {
                          dp[i][j][k] = 0;
                          continue;
                      }
                      char[] ss = strs[k - 1].toCharArray();
                      int countOne = 0;
                      int countZero = 0;
                      for (char c : ss) {
                          countOne += c == '1' ? 1 : 0;
                          countZero += c == '0' ? 1 : 0;
                      }
                       dp[i][j][k] = dp[i][j][k - 1]; 
                      if (i >= countZero && j >= countOne) {
                          dp[i][j][k] = Math.max(dp[i][j][k], dp[i - countZero][j - countOne][k - 1] + 1);
                      }
                  }
              }
          }
          return dp[m][n][len];
      }
masked: public int sample_funcname ( String [ ] var_1 , int var_2 , int var_3 ) {
    if ( var_1 == null || var_1 . length == 0 || ( var_2 == 0 && var_3 == 0 ) ) {
      return 0 ;
    }
    int var_7 = var_1 . length ;
    int [ ] [ ] [ ] var_9 = new int [ var_2 + 1 ] [ var_3 + 1 ] [ var_7 + 1 ] ;
    for ( int var_10 = 0 ;
    var_10 <= var_2 ;
    var_10 ++ ) {
      for ( int var_11 = 0 ;
      var_11 <= var_3 ;
      var_11 ++ ) {
        for ( int var_12 = 0 ;
        var_12 <= var_7 ;
        var_12 ++ ) {
          if ( var_12 == 0 || ( var_10 == 0 && var_11 == 0 ) ) {
            var_9 [ var_10 ] [ var_11 ] [ var_12 ] = 0 ;
            continue ;
          }
          char [ ] var_14 = var_1 [ var_12 - 1 ] . toCharArray ( ) ;
          int var_15 = 0 ;
          int var_16 = 0 ;
          for ( char var_17 : var_14 ) {
            var_15 += var_17 == '1' ? 1 : 0 ;
            var_16 += var_17 == '0' ? 1 : 0 ;
          }
          var_9 [ var_10 ] [ var_11 ] [ var_12 ] = var_9 [ var_10 ] [ var_11 ] [ var_12 - 1 ] ;
          if ( var_10 >= var_16 && var_11 >= var_15 ) {
            var_9 [ var_10 ] [ var_11 ] [ var_12 ] = Math . max ( var_9 [ var_10 ] [ var_11 ] [ var_12 ] , var_9 [ var_10 - var_16 ] [ var_11 - var_15 ] [ var_12 - 1 ] + 1 ) ;
          }
        }
      }
    }
    return var_9 [ var_2 ] [ var_3 ] [ var_7 ] ;
  }
  