Arrays 如何列出等于X的N个索引的所有组合
我正在尝试使用以下规则返回数组:Arrays 如何列出等于X的N个索引的所有组合,arrays,algorithm,sorting,sum,Arrays,Algorithm,Sorting,Sum,我正在尝试使用以下规则返回数组: 1.总和为X的所有唯一组合 2.每个数字都分配了一个字母 3.每个字母一次只能使用一次 // Cartesian join function cartesian() { let r = [] let arg = arguments let max = arg.length-1 function helper(arr, i) { for (let j=0, l=arg[i].length; j<l; j++) { let
1.总和为X的所有唯一组合
2.每个数字都分配了一个字母
3.每个字母一次只能使用一次
// Cartesian join
function cartesian() {
let r = []
let arg = arguments
let max = arg.length-1
function helper(arr, i) {
for (let j=0, l=arg[i].length; j<l; j++) {
let a = arr.slice(0); // clone arr
a.push(arg[i][j]);
if (i==max)
r.push(a);
else
helper(a, i+1);
}
}
helper([], 0);
return r;
}
let a = ['A','B','C'];
let a1 = ['1','2','3'];
let arrays = cartesian(a, a1)
for(let i=1; i<arrays.length; i++) {
file[i] = arrays[i].join('').toString();
}
//笛卡尔连接
笛卡尔函数(){
设r=[]
设arg=arguments
设max=arg.length-1
功能助手(arr,i){
对于(让j=0,l=arg[i].length;j在您的示例中,您最多可以使用任意数字3次,因此我将从一个数组开始
[1,1,1,2,2,2,3,3,3]
然后找到总和为5的所有组合,同时最多使用3个条目,每个条目只使用一次
找到数字后,您可以分配字母。例如,数字1,1,3
可以表示为A1、B1、C3
、A1、B3、C1
和A3、B1、C1
。如果您有三个不同的数字,则有六种分配字母的方法
简而言之,首先找到数值解,然后指定字母