高分请教一个组合问题

crackling 2009-07-29 09:21:49
1.有n(10 <n <100)组原始数据,要从每个组随即抽出1-4个数据,组成6个数据一组的新数据
2.结果要显示出所有新数据的组合


另有100分在下面板块:
http://topic.csdn.net/u/20090729/21/bec84a20-c2ab-42c2-ad66-ebf12aaba657.html
...全文
179 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
adfas 2009-07-30
  • 打赏
  • 举报
回复
问题本身决定了不可能降低复杂度
crackling 2009-07-30
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 superspring 的回复:]
n数据,你应该可以算出数据的个数(假设为m),把这些数据放在一起(比如一个数组a里面)
问题就转化为,如何把数组a分割成 (m/6)+1份,其中每份个数为6

那就可以用回溯算法做了吧
伪代码


C/C++ code
假设输出的数组为 b_1[6],b_2[6], ...., b_((m/6)+1) [6]
for each x in a[]
for(int i=0; i<(m/6)+1; i++){
把 x 放入 b_i[]中;
标记x已用过(可以把x从a[]中剔除);

[/Quote]




谢谢回复,我再明确一下题意:

补充说明一下题目:
每组应该是可以抽0~4个数据。
比如共有7组数据
第1组数据为:12,23,34,45,56,67,78,89
第2组数据为:112,213,314,415,516,617,718,819,12389
第3组数据为:182,123,134,145,156,167
第4组数据为:122,232,342,452,562
第5组数据为:132,243
第6组数据为:125,236,345,458,596,697,789,899,12736781,1263
第7组数据为:102,203,304,405,506,607,708

那么最后要的结果显示为:
12,23,34,45,112,213;
12,23,34,45,112,314;
………………………………
12,23,34,45,112,182;
……………………………………
12,23,34,112,182,122;
……………………………………
……………………………………

即要显示所有可能的组合,这个组合数我都不敢想有多少。。。。。


你的代码貌似没有考虑每组最多只能抽4个的情况……
superspring 2009-07-30
  • 打赏
  • 举报
回复
[Quote=引用楼主 crackling 的帖子:]
1.有n(10 <n <100)组原始数据,要从每个组随即抽出1-4个数据,组成6个数据一组的新数据
2.结果要显示出所有新数据的组合


另有100分在下面板块:
http://topic.csdn.net/u/20090729/21/bec84a20-c2ab-42c2-ad66-ebf12aaba657.html
[/Quote]

还有,你这个题目的描述有点自相矛盾,你既然要所有可能组合,为什么还要提随机?
superspring 2009-07-30
  • 打赏
  • 举报
回复
n数据,你应该可以算出数据的个数(假设为m),把这些数据放在一起(比如一个数组a里面)
问题就转化为,如何把数组a分割成 (m/6)+1份,其中每份个数为6

那就可以用回溯算法做了吧
伪代码


假设输出的数组为 b_1[6],b_2[6], ...., b_((m/6)+1) [6]
for each x in a[]
for(int i=0; i<(m/6)+1; i++){
把 x 放入 b_i[]中;
标记x已用过(可以把x从a[]中剔除);
对于没有用过的元素进行递归
}
tuzi0203 2009-07-30
  • 打赏
  • 举报
回复
我还以为只有40分哩
fire_woods 2009-07-30
  • 打赏
  • 举报
回复
要求所有,就遍历吧.

33,028

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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