给定一组 12 个整数,如何递归生成所有可能的 4 组 3 个整数?C++
Given a set of 12 integers, how to recursively generate all possible 4 groups of 3? C++
例如给定集合{1,2,...,11,12},一个可能的 4 组 3 是
(12, 1, 7)(3, 6, 9)(4, 11, 2)(10, 8, 5)
想想阶乘计算是如何工作的 - 如果你想要所有可能的排列,你会计算n!
,因为这是选择第一个元素的方法的数量,乘以之后选择第二个元素的方法的数量,依此类推。这应该很容易实现,循环实际上涵盖了所有可能性,并递归构建了所有这些排列。
在(或期间)为一行中所有可能的元素选择排列之后,您只需要消除冗余的可能性 - 一个或多个三元组是另一个的简单洗牌,以及所有三元组都相同但 4 组排序不同的那些。
实现此目的的一种简单方法是在内部对每个组进行排序(即 (12 2 1) (5 4 2) .. --> (1 2 12) (2 4 5) ..
),并根据每个组的第一个元素再次排序,然后遍历排列列表并消除连续的相同元素
相关文章:
- 有可能在Armadillo中复制MATLAB circshift方法吗
- 在他自己的方法中,有可能将一个对象取消引用到另一个对象吗
- 有可能使shared_ptr协变吗
- 有可能在信号处理程序中设置promise吗
- 是否有可能实现O(N)时间和O(1)空间解决方案,以实现C++中的字符串循环移位
- 是否有可能构建面向Linux和Windows的.Net Core C++ / CLI应用程序?
- 是否有可能使用debug_info获取ELF文件的源代码?
- C++,是否有可能/如何定义在.h和.cpp源文件中调用函数的类构造函数
- 有可能在C++中有类的查找表吗
- 是否有可能让 c++ dll 在后台运行 python 程序并让它填充向量图?如果是这样,如何?
- 向量的大小是否有可能为 1 但其中的元素数量为零?
- 是否有可能编写新的叮当声现代化规则?
- 将大小转换为整数有什么问题?
- 是否有可能通过指向另一个未关联的子对象的指针来获取指向一个子对象的指针?
- 是否有可能通过演绎指南实现整个 std::make_tuple 功能?
- 是否有可能在没有复制的情况下传递 std::vector<int> 作为参数来获得 std::vector<std::array<int, 3>>?
- 是否有可能具有放入容器的移动操作的类型?
- 有可能将多个整数赋值为一吗
- 编译器是否有可能检测整数溢出或其他数据类型溢出的可能性
- 有可能知道整数类型中有多少位吗