【发布时间】:2021-11-19 07:09:53
【问题描述】:
[问题]
John 创建了一个仅由 1、2 和 3 组成的序列条码,他希望重新创建一种算法,该算法可以随着对象数量的增加创建一个不同于现有序列条码的新序列条码。 当您说您必须从 1 到 N 的自然数中选择 M 且长度应为 M 时,请创建一个函数以返回您可以在数组中制作的所有条形码。 条件序列必须按照字典顺序递增的顺序输出。条形码必须返回数字。
[输入]
Factor 1:nNumber 类型从 1 到 10 的自然数 因子 2:mNumber 类型从 1 到 n 的自然数 $ 你必须返回一个包含输出数字列表的数组。
[输入输出示例]
所有条形码不应有相同的编号。
-
N 为 2,M 为 1,您必须使用 1 或 2 来创建适合 1 长度的条形码。 构造1 = test2 (2, 1); 控制台.log(输出1); // --> [1, 2]
-
N 为 3,M 为 2,您必须使用 1、2 和 3 创建一个适合 2 长度的条形码。 构造2 = test2 (3, 2); 控制台.log(输出2); //-> [12, 13, 21, 23, 31, 32]
这是我写的代码。
function solution(m, arr){
let answer=[];
n=arr.length;
let ch=Array.from({length:n},()=>0);
let tmp=Array.from({length:m},()=>0);
function DFS(L){
if(L===m){
answer.push(tmp.slice());
}
else{
for(let i=0; i<n; i++){
if(ch[i]===0){
ch[i]=1;
tmp[L]=arr[i];
DFS(L+1);
ch[i]=0;
}
}
}
}
DFS(0);
return answer;
}
let arr=[3, 6, 9];
console.log(solution(2, arr));
从代码中可以看出,与问题中需要的因子不同,我将数组放入因子中。 但是我想输入自然数并将它们输出到一个数组中,就像我在输入输出示例中所做的那样。 解决这个问题的好方法是什么?
【问题讨论】:
-
我并没有完全理解这个问题(我是否正确,您为此使用了英语的自动翻译?)但是如果问题是如何取自然数
4,并将其转化为数组[1, 2, 3, 4],然后可以搜索range函数。它们相当容易编写。
标签: javascript arrays algorithm permutation