class Solution {
public int findMaxForm(String[] strs, int m, int n) {
int a[] = new int[strs.length+1];
int b[] = new int[strs.length+1];
for(int i=0;i<strs.length;i++){
int s1=0;
int s2=0;
String s = strs[i];
for(int j=0;j<s.length();j++){
char ch = s.charAt(j);
if(ch=='0') s1++;
else s2++;
}
a[i+1] = s1;
b[i+1] = s2;
}
int f[][][] = new int[strs.length+1][m+1][n+];
for(int i=1;i<=strs.length;i++){
for(int j=0;j<=m;j++){
for(int k=0;k<=n;k++){
//01背包问题
f[i][j][k] = Math.max(f[i][j][k],f[i][j-a[i]][k-b[i]]+1);
}
}
}
return f[strs.length][m][n];
}
}