Combinations of 1 2 3 4

Combinations of 1 2 3 4

本文关键字:of Combinations      更新时间:2023-10-16

我正在用C++编写一个程序,其中我需要获取一组项,并生成所有长度的唯一组合。我在这里看到了很多例子,它们取一个像[1,2,4]的集合,然后创建[1,3,4]、[1,2、3]、[1,3,2,4]、[1,3,4,2]。。。等等,但那不是我需要的。我需要取一个像[1,2,4]这样的集合,并生成像这样的项目集

1,2

1,3

1,4

2,3

2,4

1,2,3

1,3,4

2,3,4

1,2,3,4

(以及我可能错过的任何其他内容)

最简单的算法是什么?

假设您拥有全长解决方案的所有组合,那么要获得{1, 2, 3, 4}的所有长度,请执行以下操作:

  • 获取所有长度为4的解决方案
  • 移除1以获得{2, 3, 4}并递归调用此解决方案
  • 移除2以获得{1, 3, 4}并递归调用此解决方案
  • 移除3以获得{1, 2, 4}并递归调用此解决方案
  • 移除4以获得{1, 2, 3}并递归调用此解决方案

自然地,当你只考虑一个元素时,不要试图求解它,而只是将其作为唯一的排列返回。

如果计算时间不是一个问题,你可以简单地用你看到的"很多例子"来计算给定集合的所有排列,然后在输入的所有子集中运行它。