码迷,mamicode.com
首页 > 其他好文 > 详细

PAT 甲级 A1063 (2019/02/22)

时间:2019-02-24 11:03:02      阅读:169      评论:0      收藏:0      [点我收藏+]

标签:end   max   diff   code   pre   number   scanf   集合   iter   

#include<cstdio>
#include<set>
using namespace std;
const int MAXN = 51;
set<int> ST[MAXN];  //MAXN个集合 
void compare(int x, int y){     //比较集合 ST[x] 和 ST[y] 
    int DiffNumber = ST[y].size(), SameNumber = 0;  //不同数的个数,相同数的个数
    //遍历集合 ST[x]
    for(set<int>::iterator it = ST[x].begin(); it != ST[x].end(); it++){     
        if(ST[y].find(*it) != ST[y].end())  //在 ST[y] 中能找到该元素 
            SameNumber++;
        else    //在 ST[y] 中不能找到该元素
            DiffNumber++;
    }
    printf("%.1f%%\n", SameNumber * 100.0 / DiffNumber);
}
int main(){
    int N, K, IntegerNumber, Number, ST1, ST2;
    scanf("%d", &N);    //集合个数
    //因为集合次序为1,2,3,4,...N,所以不能从0开始 
    for(int i = 1; i <= N; i++){    
        scanf("%d", &IntegerNumber);    //集合 i 中的元素个数,
        for(int j = 0; j < IntegerNumber; j++){ //此循环执行 IntegerNumber 次即可 
            scanf("%d", &Number);   //集合 i 中的元素 Number 
            ST[i].insert(Number);   //将元素 Number 加入集合 ST[i] 中 
        }
    }
    scanf("%d", &K);    // K 个查询 
    for(int i = 0; i < K; i++){
        scanf("%d%d", &ST1, &ST2);  //需要对比的两个集合编号 
        compare(ST1, ST2);  //比较两个集合 
    }
    return 0;
}

PAT 甲级 A1063 (2019/02/22)

标签:end   max   diff   code   pre   number   scanf   集合   iter   

原文地址:https://www.cnblogs.com/zjsaipplp/p/10425226.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!