我正在寻找一种有效的方式来实现以下目标:
你有一个数字列表1.....n(通常是1..5或1..7等 - 可以根据情况而变化,但是不会太大)
您需要该数字的所有长度的所有组合,例如仅由一个数字组成的所有组合({1}, {2}, .... {n}),然后是两个不同数字的所有组合({1,2},{1,3},{1,4}.....{n-1, n}),接着是三个数字的所有组合 ({1,2,3}, {1,2,4})以此类推
基本上,在组内不考虑顺序,因此 {1,2,3} 等同于 {1,3,2} — 只是要从该列表中获取所有 x 个数字的组合。
似乎应该有一个简单的算法来做到这一点 - 但迄今为止我搜索无果。大多数排列组合算法似乎都会考虑顺序(例如123不等于132),并且它们似乎总是在单个字符或数字字符串上操作....
有人掌握了伟大、快捷的算法吗?
谢谢!