我有一个有n个子集的集合,我现在要其中的子集,两两比对。
比如:集合{1,2,3,4},1和2,3,4逐一比对,2和3,4比对,3和4比对。
我目前没有找到合适的解决方法,做了全匹配,比如,1和1,2,3,4比对,2和1,3,4比对.....
然后把多余出来的删除。这样比较影响效率:(
求高手指点

解决方案 »

  1.   

    这种循环,对比是效率低的,你目的反正是避免重复。所以给个建议,你看你这些子集合是不是都可以生成某个唯一标志(只要元素相同的集合,其标志都相同,比如{1,2,3}可以生成标志123)。这样的话,通过比较标志就可以了。可以把这些子集合取出来,放到HashTable中,如HashTable[标志]=集合。如果发现HashTable中存在心头工的标志,那么表示此集合重复。后面取出HashTable中的的值就是已经唯一了的集合。
      

  2.   

    在循环里再定义一层即可。
    for(int =0;i<couns;i++)
    {
       for(int j=i;j<counts-1;j++)
         {
               .....
         }
    }
    大概是这样的。谢楼上的