排列需要帮助编码

时间:2012-11-27 04:38:51

标签: javascript html arrays permutation

感谢您的回复,首先我要感谢您帮助我,并且我已经在几个网站上发布了这个,也没有人试图提供帮助。

对于我的代码,我想做的是排列计数。

它将从上到下计数
1,2,3
1,2,3
1,2,3

output to
111 = 1
112 = 1
113 = 1
121 = 1
122 = 1
123 = 1
133 = 1
211 = 1
212 = 1
213 = 1
333 = 1

并继续直到所有数字都计数并存储到数组中,该数组可以检查毕竟有多少数

代码将检查输入数字并计算结果数量,并显示结果,结果有多少,每个结果都有多少个排列计数。

很难做到?。

无论如何,谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

我猜,这并不难。这只是标准的排列事物。你需要使用一点递归:

function permute(size) {
    var range = getRange(size);
    var result = [];
    getSubPerms('', range, result);
    return result;
};

function getRange(size) {
    var range = [];
    for (var i = 0; i < size; i++) {
        range.push(i + 1);
    }
    return range;
}

function getSubPerms(perm, range, result) {
    for (var i = 0; i < range.length; i++) {
        var perm2 = perm + range[i];
        if (perm2.length == range.length) {
            result.push(perm2);
        } else {
            getSubPerms(perm2, range, result);
        }
    }
}

var foo = permute(4); //an array of all of your results.
alert(foo.length); //256

但是,如果您只对它的长度感兴趣,而不必生成结果,则只需Math.pow(size, size)即可获得结果的长度。