[Vssue]0474.一和零.md
youngyangyang04 opened this issue · 8 comments
Du1in9 commented
int[][] dp = new int[m + 1][n + 1];
for (String str : strs) {
int oneNum = 0, zeroNum = 0;
for (char c : str.toCharArray()) {
if (c == '0') zeroNum++;
else oneNum++;
}
for (int i = m; i - zeroNum >= 0; i--) {
for (int j = n; j - oneNum >= 0; j--) {
dp[i][j] = Math.max(dp[i][j], dp[i - zeroNum][j - oneNum] + 1);
}
}
}
return dp[m][n];
2265968042 commented
所以这个题目的意思是,有两个维度,每个维度都是0-1背包问题。同时在每个维度使用的都是之前一维的滚动数组。所以有两个一维的滚动数组,最后合起来变成了二维的了。