var a = [1,2,3]
var b = [1,2,3]
var c = [1,2,3,4]
里面的每个数组取三位数。
以上共有36种组合。
我想计算每个组合的位置。
[1,1,1]的位置是1
[1,1,2]的位置是2
[2,2,4]的职位是?
我想问一下这些组合的位置有多少,是否有特定的公式?
答案 0 :(得分:0)
编写三个嵌套for循环。第一个是数组a,第二个是b,第三个是c。这样你首先要改变c换新的排列而不是b。在转到for循环之前,声明一个名为count的变量,它是1.在第三个循环中,将该变量增加1。例如:
int first,second,third,count=1;
for(int i=0;i<a.size();i++)
{
first=a[i];
for(int k=0;k<b.size();k++)
{
second=b[k];
for(int g=0;g<c.size();g++)
{
third=c[g];
count=count+1; //count++
}
}
}
这是用C ++编写的。但是你明白了。你可以把if语句放在中间来找到你要找的排列数。
答案 1 :(得分:0)
var a = [1,2,3];
var b = [1,2,3];
var c = [1,2,3,4];
var all = [a,b,c];
var allCount = [b.length * c.length, c.length, 0];
function getIndex(combo) {
var count = 0;
for (var i = 0; i < combo.length; i++) {
var pos = all[i].indexOf(combo[i]);
if (pos < 0) {
throw new Error(combo[i] + "Not effective elements");
}
count += allCount[i] * pos;
}
count += combo[combo.length - 1];
return count;
}
console.log("index of [2,2,4] is " + getIndex([2,2,4]));
console.log("index of [1,1,1] is " + getIndex([1,1,1]));
console.log("index of [3,3,4] is " + getIndex([3,3,4]));
console.log("index of [1,2,3] is " + getIndex([1,2,3]));
console.log("index of [3,2,1] is " + getIndex([3,2,1]));
输出:
index of [2,2,4] is 20
index of [1,1,1] is 1
index of [3,3,4] is 36
index of [1,2,3] is 7
index of [3,2,1] is 29