【问题标题】:permutation need help to code排列需要帮助编码
【发布时间】:2012-11-14 16:12:56
【问题描述】:

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

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

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

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

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

很难做到吗?

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

【问题讨论】:

    标签: javascript html arrays permutation


    【解决方案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) 即可获得结果的长度。

    【讨论】:

      猜你喜欢
      • 2014-04-06
      • 1970-01-01
      • 1970-01-01
      • 2011-09-12
      • 2014-07-10
      • 2019-02-12
      • 2020-08-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多