求出n个元素的集合中个数不超过m(m <= n)的所有子集

tianya0609 2009-08-15 10:52:00
要求输出是按字典顺序排列的啊。而且不用求出求出所有子集再去选的(我就是会用这种笨方法),不知道有没有好的代码贴出来分享下啊。
...全文
252 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
tianya0609 2009-08-16
  • 打赏
  • 举报
回复
starcat 2009-08-15
  • 打赏
  • 举报
回复
如果所有元素都互异的话,用不同元素数目子集的组合数相加起来应该就得了

如果有相同的元素,那好象比较麻烦
xmrforever 2009-08-15
  • 打赏
  • 举报
回复
友情帮顶
tianya0609 2009-08-15
  • 打赏
  • 举报
回复
字典排序相等于按string排序一样的。长度长的不一定排在前面
tianya0609 2009-08-15
  • 打赏
  • 举报
回复
得按字典排序的。
daivyli 2009-08-15
  • 打赏
  • 举报
回复
用递归来做 ,就是组合。 m=4,n=5得到的结果就是 C54+C53+C52+C51 ;
另外5个元素中4个元素的子集 可以看成 第1个元素与后4个元素中任取三个元素形成的集合 + 第二个元素与后三个元素中任取两个元素组成的集合 ...依次类推,完全就是递归算法,这样找出的集合比所有子集数要少,满足你的要求。
superbtl 2009-08-15
  • 打赏
  • 举报
回复
先把n个元素排序? 这个迟早要有个地方排序吧

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧