function maxCount(s, a1, a2, i1 = 0, i2 = 0) {
const c1 = i1 < a1.length && a1[i1] <= s ? 1 + maxCount(s - a1[i1], a1, a2, i1 + 1, i2) : 0;
const c2 = i2 < a2.length && a2[i2] <= s ? 1 + maxCount(s - a2[i2], a1, a2, i1, i2 + 1) : 0;
return Math.max(c1, c2);
}
console.log(maxCount(10, [5, 1, 1, 1, 1], [1, 3, 3, 3, 3]));
на каждом шаге выбираем максимум из с1 (случай, когда можно взять очередной элемент из массива a1) и с2 (из массива а2)
можно добавить мемоизацию для ускорения (мемоизовать по паре i1, i2)