是否有有效的算法将返回所有不同的组合?

the*_*ist 2 algorithm combinations

编辑:我的意思是组合,而不是PERMUTATIONS

是否有有效的算法可以返回给定数组中的所有不同的排列?["A","B","C","D","E","F","G","H","I","J","K",......]

例如:AB,AC,AD,..,DE,..,HI,..,ABC,ABD,...,DEF,..,CDEFG,...,ABCDEFGHIJK,....

我发现了一些算法,但它们返回所有排列而不是不同的排列.通过不同我的意思是:

  1. AB&BA是相同的排列

  2. DEF&FED和EFD&DFE是相同的排列,

Cor*_*urn 10

我能想到的最好的是一个二元计数器:

 A B C
-------
 0 0 0 | Empty Set
 0 0 1 | C
 0 1 0 | B
 0 1 1 | BC
 1 0 0 | A
 1 0 1 | AC
 1 1 0 | AB
 1 1 1 | ABC
Run Code Online (Sandbox Code Playgroud)