474.一和零
class Solution {
public:
int findMaxForm(vector<string>& strs, int m, int n) {
// dp[i][j] 表示子集中最多i个0和j个1的最大子集长度
vector<vector<int>>dp(1+m,vector<int>(1+n,0));
// x = count(s.begin(),s.end(),'0');
// y = s.size() - x;
// dp[i][j] = max(dp[i][j],dp[i-x][j-y]+1)
for (int u = 0; u < strs.size() ; u ++ ) {
string s = strs[u];
int x = count(s.begin(),s.end(),'0');
int y = s.size() - x;
for ( int i = m ; i >= x; i -- ) {
for ( int j = n ; j >= y; j -- ) {
dp[i][j] = max(dp[i][j],dp[i-x][j-y]+1);
}
}
}
return dp[m][n];
}
};
这个题很舒服,自己一下写过的