Appearance
474.一和零
题解
js
/**
* @param {string[]} strs
* @param {number} m
* @param {number} n
* @return {number}
*/
var findMaxForm = function (strs, m, n) {
// 初始化dp
const dp = Array.from(Array(m + 1), () => Array(n + 1).fill(0));
// 遍历物品
for (let i = 0; i < strs.length; i++) {
// 获取当前n对应的 1的数量(物品容量)
const oneNum = strs[i].replace(/0/g, "").length;
// 获取当前m对应的 0的数量(物品容量)
const zeroNum = strs[i].replace(/1/g, "").length;
// 遍历背包容量
for (let x = m; x >= zeroNum; x--) {
for (let y = n; y >= oneNum; y--) {
dp[x][y] = Math.max(dp[x][y], dp[x - zeroNum][y - oneNum] + 1);
}
}
}
return dp[m][n];
};
/**
* @param {string[]} strs
* @param {number} m
* @param {number} n
* @return {number}
*/
var findMaxForm = function (strs, m, n) {
// 初始化dp
const dp = Array.from(Array(m + 1), () => Array(n + 1).fill(0));
// 遍历物品
for (let i = 0; i < strs.length; i++) {
// 获取当前n对应的 1的数量(物品容量)
const oneNum = strs[i].replace(/0/g, "").length;
// 获取当前m对应的 0的数量(物品容量)
const zeroNum = strs[i].replace(/1/g, "").length;
// 遍历背包容量
for (let x = m; x >= zeroNum; x--) {
for (let y = n; y >= oneNum; y--) {
dp[x][y] = Math.max(dp[x][y], dp[x - zeroNum][y - oneNum] + 1);
}
}
}
return dp[m][n];
};