打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
合并有交集的集合

http://blog.csdn.net/jazywoo123/article/details/8022795

2012.09

题目如下,

给定一个字符串的集合,格式如: 
{aaa  bbb  ccc}, {bbb   ddd},{eee   fff},{ggg},{ddd   hhh} 
要求将其中交集不为空的集合合并,要求合并完成后的集合之间无交集,例如上例应

输出 
{aaa  bbb  ccc  ddd  hhh},{eee   fff}, {ggg} 
(1)请描述你解决这个问题的思路; 
(2)请给出主要的处理流程,算法,以及算法的复杂度 
(3)请描述可能的改进(改进的方向如效果,性能等等,这是一个开放问题)。


我查了查网上的解法,只看到一个(参见http://blog.csdn.net/lillllllll/article/details/4162605),我有一点新想法,说明如下:

1. 首先得到所有元素的集合(aaa, bbb, ccc, ddd, eee, fff, ggg, hhh),复杂度O(N),N是所有元素的个数;

2. 为所有集合标记一个二进制数,来表示包含哪些集合,得到数组int bina[5]复杂度O(N^2);

    如题,{aaa, bbb, ccc} = 1 1 1 0 0 0 0 0,

                {bbb, ddd}         = 0 1 0 1 0 0 0 0,

                {eee, fff}             = 0 0 0 0 1 1 0 0,

                {ggg}                  = 0 0 0 0 0 0 1 0,

                {ddd, hhh}         = 0 0 0 1 0 0 0 1,

3. 然后写一个函数,判断int数组中的第一个元素是否与其他元素&操作为空,复杂度为O(M),M是原集合的个数

    a. 为空则输出该元素对应的集合,并删除第一个元素,递归调用本方法;

    b. 不为空则与那个元素做或操作合并,删除那个元素,递归调用本方法;

    c. 如果只剩下一个元素则输出其对应的字符串;

4. 所有的结合已经得到了。

从上面的复杂度看,应该是比原来网上的方法好一些,欢迎大家踊跃拍砖!
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
XPath学习:轴(7)
jQuery 获取对象 根据属性、内容匹配, 还有表单元素匹配
完全加密公式破解 {有庄潜伏选股预警...
放量阳线选股指标公式
让AJAX跑在Zend Framework中 - 浮世日记 - 歪酷博客 Ycool Bl...
边框12个
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服