首页 > 其他 > 详细

PAT:1063. Set Similarity (25) AC

时间:2015-03-06 20:34:37      阅读:227      评论:0      收藏:0      [点我收藏+]
#include<stdio.h>
#include<set>
using namespace std;

set<int> str[51];      //最大51个集合 

void compare(int s1,int s2)
{
  int different=str[s1].size(),same=0;    //初始化并集元素为s1元素个数,交集元素0个  
  for(set<int>::iterator it=str[s2].begin() ; it!=str[s2].end() ; ++it )  //【skill】迭代器it指向s2开始处,加到结尾处结束
    if(str[s1].find(*it)!=str[s1].end())  //【skill】迭代器it指向位置的内容在s1中的坐标
      ++same;                //【skill】不是结尾,就表明找到(此处结尾是不可达的,end是s1最后一个元素的下一个位置)
    else
      ++different;            //是s1结尾,表明找不到,这个元素不同
  printf("%.1f%%\n",(double)same/(double)different*100);
}

int main()
{
  int n;          //n个集合
  scanf("%d",&n);
  for(int i=1 ; i<=n ; ++i)
  {
    int k=0;
    scanf("%d",&k);
    for(int j=0 ; j<k ; ++j)
    {
      int tmp;
      scanf("%d",&tmp);
      str[i].insert(tmp);
    }
  }
  int q;
  scanf("%d",&q);
  for(int i=0 ; i<q ; ++i)
  {
    int s1,s2;
    scanf("%d%d",&s1,&s2);
    compare(s1,s2);
  }
  return 0;
}

PAT:1063. Set Similarity (25) AC

原文:http://www.cnblogs.com/Evence/p/4319044.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!