- 主题:这种组合算法怎么写? (转载)
n个不同元素集合的全组合生成比较容易,就是2^n种,直接用大整数的二进制表示中的每个bit表示元素选取与否即可。
【 在 iStudy 的大作中提到: 】
: 【 以下文字转载自 Java 讨论区 】
: 发信人: iStudy (爱学习), 信区: Java
: 标 题: 这种组合算法怎么写?
: ...................
--
FROM 221.221.161.*
排列生成你可以看 C++ 的 std::next_permutation 实现,从一个排列生成字典序的下一个排列,也不复杂。
【 在 iStudy 的大作中提到: 】
: 【 以下文字转载自 Java 讨论区 】
: 发信人: iStudy (爱学习), 信区: Java
: 标 题: 这种组合算法怎么写?
: ...................
--
FROM 221.221.161.*
类似地,也可以写 n 个元素中取 k 个的下一种组合取法的函数。这个也不难,和写带进位的大整数加法有点像:假定取出的数升序排列,尽量给末位加1;如果不能加就试试加前面一位的,进位后就把后面的所有位恢复最小序。
你写几个例子看看就能自己写出来。
网上搜 next combination 也能找到现成代码。
【 在 milksea 的大作中提到: 】
: 排列生成你可以看 C++ 的 std::next_permutation 实现,从一个排列生成字典序的下一个排列,也不复杂。
: 【 在 iStudy 的大作中提到: 】
: : 【 以下文字转载自 Java 讨论区 】
: ...................
--
修改:milksea FROM 221.221.161.*
FROM 221.221.161.*