1
var findMaxForm = function (strs, m, n) {2
const countZerosAndOne = strs.map((str) => {5
str.split("").forEach((c) => (c == "0" ? z++ : o++));8
const len = strs.length;11
const knapsack = (i, m, n) => {12
if (i == len) return 0;14
const key = i + "#" + m + "#" + n;16
if (dp.has(key)) return dp.get(key);20
const [rz, ro] = countZerosAndOne[i];22
if (m >= rz && n >= ro) pick = knapsack(i + 1, m - rz, n - ro) + 1;25
let drop = knapsack(i + 1, m, n);27
const op = Math.max(drop, pick);31
return knapsack(0, m, n);