给定一个从1到n的序列,我想找到所有大小为m的唯一子序列,求和到n。子序列不需要是连续的。例如
if m = 2, n = 5
The possible unique subsequences of size 2 are {1,4} and {2,3}
到目前为止,我已经能够使用递归生成所有的子序列,但我的代码并不是只返回唯一的子序列,结果中有一些重复的子序列。
function allCombinations(m, n) {
if (m < 1) {
return [];
}
let helper = function(m, n, arr, result, index){
if (n < 0 || m < 0) {
return 0;
}
if (m === 0 && n === 0) {
result.push(arr.slice());
return 1;
}
for (let i = index; i <= n; i++){
arr.push(i);
helper(m - 1, n - i, arr, result, index + 1);
arr.pop();
}
}
let result = [];
helper(m, n, [], result, 0);
return result;
}
当用
let res = allCombinations(2, 5);
结果是
[ [ 1, 4 ], [ 2, 3 ], [ 3, 2 ] ]
正如您所看到的,{3,2}是{2,3}的副本。我如何改变我的代码,使它只返回唯一的序列?
for (let i = index; i <= n; i++){
arr.push(i);
helper(m - 1, n - i, arr, result, i + 1);
arr.pop();
}
这将产生唯一的序列,其中元素按升序排序。如果只使用i
调用它,则允许重复选择。
更改此选项将允许零作为选择,除非从包装函数调用索引为1的帮助器:
let result = [];
helper(m, n, [], result, 1);
我想在java中创建一个方法,该方法接收两个字符串列表:
IntStream可能是最简单的方法,但我只能获取最小的M数字,如下所示: 顺便说一句,考虑算法复杂性并假设N 我认为最好的复杂性可能达到O(N log(M)),但我不知道Java 8是否有这种流方法或收集器。
本文向大家介绍前n个自然数求和的Java程序,包括了前n个自然数求和的Java程序的使用技巧和注意事项,需要的朋友参考一下 以下是Java代码到前n个自然数的和– 示例 输出结果 名为Demo的类定义了一个静态函数,该函数以值作为参数。这里,初始和定义为0。接下来,“for”循环在值1上运行到作为参数传递的值。这是从1开始的数的立方体需要计算到的值。接下来,将每个元素的值乘以三次并返回。接下来,
这个问题以前也有人问过,但我从来没有真正看到过好的答案。 > 我想生成8个和为0.5的随机数。 我希望每个数字都是从一个均匀分布中随机选择的(即下面的简单函数将不起作用,因为数字将不是均匀分布的)。 代码应该是可推广的,这样您就可以生成N个和M(其中M是正浮点)的均匀随机数。如果可能的话,能否也请你解释一下(或用一个图表示)为什么你的解会在适当的范围内均匀地产生随机数? 失手的相关问题: 在pyt
本文向大家介绍写一个方法,计算有N个数(可重复),分别放到M个位置中,有多少种排列?相关面试题,主要包含被问及写一个方法,计算有N个数(可重复),分别放到M个位置中,有多少种排列?时的应答技巧和注意事项,需要的朋友参考一下
我明天有一个计算机科学期中考试,我需要帮助确定一个特定递归函数的复杂性,如下所示,这比我已经研究过的东西要复杂得多:它有两个变量 T(n)=3 mT(n-m) 在m为常数的简单情况下,可以通过编写解包关系轻松获得公式;然而,在这种情况下,拆包并不会使生活变得更容易,如下所示(假设t(0)=c): T(n)=3 mT(n-m) T(n-1)=3 mT(n-m-1) T(n-2)=3 mT(n-m-2