您的位置:首页 > 其它

pat 1063. Set Similarity (25)

2013-09-01 23:33 381 查看
用vector二维存储

sort来对每个集合进行排序

nc 求两个集合交

nt 求两个集合并

#include<iostream>
#include<stdio.h>
#include<algorithm>
#include<vector>
#include<string.h>
using namespace std;
vector<vector<int> > vec;
int main()
{
int n,m,k,i,x,j,y,nc,nt;
scanf("%d",&n);
for(i=0;i<n;i++)
{
vector<int >v;
//vector<int>::iterator p=v.begin();
scanf("%d",&m);
while(m--)
{
scanf("%d",&x);
if(find(v.begin(),v.end(),x)==v.end())v.push_back(x);//去重复元素
}
sort(v.begin(),v.end());
vec.push_back(v);
}
scanf("%d",&k);
while(k--)
{
scanf("%d%d",&x,&y);
x--,y--;
nc=0;
nt=vec[x].size()+vec[y].size();
for(i=0,j=0;i<vec[x].size()&&j<vec[y].size();)
{
if(vec[x][i]==vec[y][j])
{
i++;
j++;
nt--;
nc++;
}
else
if(vec[x][i]>vec[y][j])j++;
else
i++;
}
printf("%.1lf%%\n",nc*100.0/nt);
}
return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: