每个数组都拿出一个数字,计算出数组的位置

时间:2015-06-12 01:31:38

标签: arrays

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]的职位是?

我想问一下这些组合的位置有多少,是否有特定的公式?

2 个答案:

答案 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