不同长度且不重复的组合

Posted

技术标签:

【中文标题】不同长度且不重复的组合【英文标题】:combinations with varying length and without repetition 【发布时间】:2011-06-02 08:33:24 【问题描述】:

任何人都可以提出一种简单的方法来获得所有不重复且长度不同的组合吗?

[0,1,2,3,4]

(2's) : [0,1],[0,2],[0,3] ... [3,4]

(3's) : [0,1,2],[0,1,3] ... [2,3,4]

(4's) : [0,1,2,3],[0,1,2,4] ... [1,2,3,4]

【问题讨论】:

听起来很像***.com/questions/127704/… 我刚刚找到了解决问题的函数/例程,问题很相似,看起来亚当休斯的解决方案非常相似。为了解决这个问题,if (a.length > 1) 应该更改为 == 3(或任何所需的长度。 【参考方案1】:

花了我一段时间,但我想我已经找到了......

这包含所有没有重复的组合

var arr:Array = [0, 1, 2, 3, 4];
var $allcombos:Array = [];
findCombos($allcombos,[],arr);

function findCombos($root:Array, $base:Array, $rem:Array):void 
    for (var i:int = 0; i < $rem.length; i++) 
        var a:Array = $base.concat();
        a.push($rem[i]);
        findCombos($root, a, $rem.slice(i + 1));
        if (a.length > 1) 
            $root.push(a);
        
    

【讨论】:

以上是关于不同长度且不重复的组合的主要内容,如果未能解决你的问题,请参考以下文章

是否有用于查找字符串中最长且不重复长度的子字符串的结构函数?

从 n 个元素生成长度为 r 的组合而不重复或排列的函数的时间复杂度是多少?

在数组中随机插入数字且不重复

js如何从一个数组中随机取出n个不同且不重复的值

js如何从一个数组中随机取出n个不同且不重复的值

组合和排列算法(递归)