Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 我需要帮助创建一个算法,从数字列表中返回可能的数字组列表_Algorithm_Search_Combinations - Fatal编程技术网

Algorithm 我需要帮助创建一个算法,从数字列表中返回可能的数字组列表

Algorithm 我需要帮助创建一个算法,从数字列表中返回可能的数字组列表,algorithm,search,combinations,Algorithm,Search,Combinations,我需要开发的搜索算法的一部分包括一个函数,该函数接收一个整数列表,并根据一些规则返回一个整数列表,以下是规范 输入列表可以有任意数量的数字,从最小和最大预定值变化。该函数需要返回所有可能的输入数字组合,这些数字是顺序的,大小为3或更大 输出组的顺序并不重要 例如: min = 1; max = 10; input = [1, 2, 3, 4, 6, 7, 8] output = [ [1, 2, 3], [2, 3, 4], [1, 2, 3, 4], [6, 7, 8] ] 诀窍在于输入

我需要开发的搜索算法的一部分包括一个函数,该函数接收一个整数列表,并根据一些规则返回一个整数列表,以下是规范

输入列表可以有任意数量的数字,从最小和最大预定值变化。该函数需要返回所有可能的输入数字组合,这些数字是顺序的,大小为3或更大

输出组的顺序并不重要

例如:

min = 1;
max = 10;

input = [1, 2, 3, 4, 6, 7, 8]

output = [ [1, 2, 3], [2, 3, 4], [1, 2, 3, 4], [6, 7, 8] ]
诀窍在于输入列表可以接收任意数量的小丑角色。这些小丑可以假设最小值和最大值范围内的任何值

使用小丑的示例:

min = 1;
max = 10;

input = [1, 2, 3, 4, 6, 7, 8, J]

output = [ 
    [1, 2, 3], 
    [2, 3, 4], 
    [1, 2, 3, 4], 
    [6, 7, 8], 
    [1, 2, 3, 4, J, 6, 7, 8], 
    [2, 3, 4, J, 6, 7, 8], 
    [3, 4, J, 6, 7, 8],
    [4, J, 6, 7, 8], 
    [J, 6, 7, 8], 
    [6, 7, 8, J], 
    [7, 8, J],
    [1, 2, 3, 4, J, 6, 7], 
    [1, 2, 3, 4, J, 6], 
    [1, 2, 3, 4, J, 6], 
    [1, 2, 3, 4, J] 
]
当在输入中与任何可能数量的小丑一起工作时,我无法想出任何能够解决这个问题的算法


您是否可以分享一些建议或伪代码来帮助我解决这个问题?

这里有一个递归,可能需要根据您的需要进行调整。其思想是从每个可能的起点枚举到每个可能的终点。小丑只用于列表中没有的数字。由于列表可以是稀疏的,一种方法是将每个数字视为图中的一个节点,在仍然看不见的起点上执行搜索

JavaScript代码:

函数f(A、jokerMin、jokerMax、globalMin、globalMax、minSeqLen){
//记录可用元素
让sansJokers=A.filter(x=>x!='J');
让数字=新集合(sansJokers);
设numJokers=A.length-sansJokers.length;
let seen=新集合();
//有了起点,,
//尽可能地去
函数g(js、n、comb){
让结果=comb.length>=minSeqLen?[comb]:[];

if(globalMin,因此我得到了正确的答案:Min和max定义了整数边界?因此,如果我们使用上面的Min和max,但使用Differin integer列表:[0,1,3,5,11]0和11不会包含在解的子集中?为什么J会包含在解中?当min和max仅用整数定义时,您可以生成形式为[i,i+1,i+2,…,i+k]的所有序列对于k>=2和min@nmanh,您是对的,但老实说,输入列表不会使用最小值和最大值之外的数字生成。
min=1;max=10;input=[J,J,J]