当前位置: 代码迷 >> 综合 >> 【PAT】A1063 Set Similarity (25分)
  详细解决方案

【PAT】A1063 Set Similarity (25分)

热度:57   发布时间:2024-02-12 04:09:00.0

题目

在这里插入图片描述

解决

思路

  • 计算两个集合之间的相似度
  • 由于可能出现重复元素,所以使用set

实现

Code1

#include<cstdio>
#include<set>
using namespace std;set<int> st[51];void func(int x, int y){int sameNum = 0, totalNum = st[y].size();for(set<int>::iterator it = st[x].begin(); it != st[x].end(); it++){if(st[y].find(*it) != st[y].end()) sameNum++;else totalNum++;}	printf("%.1f%%\n", sameNum * 100.0 / totalNum);
} int main(){int n, m, k, v;scanf("%d", &n);for(int i=1; i<=n; i++){scanf("%d", &m);for(int j=0; j<m; j++){scanf("%d", &v);st[i].insert(v); }}scanf("%d", &k);int q1, q2;for(int i=0; i<k; i++){scanf("%d%d", &q1, &q2);func(q1, q2);}return 0;
}