具体思想:
多维dp,多个标准直接上多维,第一次见;
具体代码:
class Solution {
public:
int findMaxForm(vector<string>& strs, int m, int n) {
//bool flag=m>n?true:false;//m>n 0多 true,m<n,1多,false;
int N=strs.size();
vector<pair<int,int>> temp;
for(auto& s:strs){
int zero=0;
int one=0;
for(auto& ch:s){
if(ch=='0'){
zero++;
}else{
one++;
}
}
temp.push_back({zero,one});
}
vector<vector<vector<int>>>dp(N+1,vector<vector<int>>(m+1,vector<int>(n+1,0)));
for(int i=1;i<=N;i++){
for(int j=0;j<=m;j++){
for(int k=0;k<=n;k++){
if(j<temp[i-1].first||k<temp[i-1].second){
dp[i][j][k]=dp[i-1][j][k];
continue;
}
dp[i][j][k]=max(dp[i-1][j][k],dp[i-1][j-temp[i-1].first][k-temp[i-1].second]+1);
}
}
}
return dp[N][m][n];
}
};```