题目链接:PAT【甲级】1121
题目简述:就是给了几对配偶的编号,又给了一串参加聚会的编号,问你在这个聚会中,有多少个单身汉。
#include<bits/stdc++.h>
using namespace std;int main(){int n, m;string s1, s2;unordered_map<string, bool> match;//记录每个人是否出现过unordered_map<string, string> cp;//记录是配偶的人cin >> n;for (int i = 0; i < n;i++){//配偶登记cin >> s1 >> s2;cp[s1] = s2;cp[s2] = s1;}cin >> m;vector<string> single(m), ans;for (int i = 0; i < m;i++){cin >> single[i];match[single[i]] = true;//把出现的人都标记起来,标记其出现过}for (int i = 0; i < m;i++)if(!match[cp[single[i]]])//看这个人的cp搭档出现过没,没出现过那就可以加入答案数组ans.push_back(single[i]);sort(ans.begin(), d());//按字典序排列cout << ans.size() << endl;for (int i = 0; i < ans.size();i++){if(i != 0)cout << " ";cout << ans[i];}return 0;
}
还是比较简单的,就是需要去标记一下。第一次全部标记,第二次循环看当前id的配偶id是否在本次聚会中出现就可以了。
本文发布于:2024-01-28 09:06:43,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/17064040096322.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |