2

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

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

它将从上到下计数
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

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

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

很难做到吗?

无论如何谢谢你的帮助。

4

1 回答 1

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

However, if you're only interested in the length of that, without having to generate the results, it would simply be Math.pow(size, size) to get the length of your results.

于 2012-11-27T05:01:29.943 回答