arrays - 允许重复的完美和问题
问题描述
给定一个整数数组和一个总和,任务是打印给定数组的所有子集,其中总和等于给定总和,允许重复。
例子 :
输入:arr = {1, 5, 6}, N = 7
输出:
1 1 1 1 1 1 1
1 1 5
1 5 1
5 1 1
1 6
6 1
我已经从https://www.geeksforgeeks.org/perfect-sum-problem-print-subsets-given-sum/,https://www.geeksforgeeks.org/ways-sum-n-中完成了相关的 DP 问题using-array-elements-repetition-allowed/并找到总和为特定值的所有子集
我还没有找到关于如何在允许重复的情况下解决这个问题的方法或任何线索。任何线索都会有所帮助。
解决方案
像这样的东西?
function f(A, N, r=[], s=N){
if (s == 0)
return [r];
result = [];
for (let a of A)
if (a <= s)
result = result.concat(
f(A, N, r.slice().concat(a), s-a));
return result;
}
console.log(JSON.stringify(f([1,5,6], 7)));
推荐阅读
- java - 单击 TextView 之外的区域后取消选择 TextView 字段
- vue.js - 即使 console.log 显示该值,也未定义 Fetch Promise
- flutter - 不要让 Flex 视图在某些屏幕尺寸后调整大小
- javascript - 我的javascript代码有什么问题还是opencv.js?
- javascript - 如何使用 javascript 动态插入 Google Web 应用程序 URL
- c - 我想对输入文件中的单词(az)进行排序并将该代码写入另一个文件。但是我被排序部分卡住了,因为它显示了一些错误
- ruby - 如何使用绑定对表达式中的多个属性执行算术运算?
- r - 如何将数据框中的 Inf 或 NA 值更改为 R 中的不同值
- r - 闪亮文档中的renderDiagrammeR美人鱼图大小
- cockroachdb - 当每个节点都出现故障时,如何恢复 cockroachdb 集群?