pta L1-020 帅到没朋友
题目链接:https://pintia.cn/problem-sets/994805046380707840/problems/994805117167976448
评价:不太好做;
首先,题目上来给的概念就很模糊,但是仔细一看,对于找重合和排序问题的话,集合是最拿手的,所以我们用集合来处理这道题
其次,就是模拟了;
题目的思路:
没有朋友圈或者朋友圈只有他自己,而且输入保证了人数大于1时是两个不同的人,所以朋友圈人数大于1的人就是有朋友的人或者说NOHANDSOME的人,这样我们就直接把这些人存入no_handsome中即可。注意:朋友圈人数等于1时仍然要把这一个人接收下来只是不存入no_handsome里。 然后就检查输入中有谁没有在no_handsome里面则就是帅到没朋友的人就输出,每次也要把帅到没朋友的人存入handsome组织起来,每次输出前要检查是否输出过。如果handsome里面没人那就输出就好了。
还有几个易错点,就是对于%05d的把握和输出空格的技巧,这里采用bool数来判断,第一个输出前是true不输出了,其余的都输出即可
Talk is cheap. Show me the code.
#include<bits/stdc++.h> using namespace std; bool flag=true; int n; int m; int main() { cin>>n; set<int> no_handsome; //集合的特点就是不重复并且是排好序的 for(int i=1;i<=n;i++) { int k; cin>>k; for(int j=1;j<=k;j++) { int temp; cin>>temp; if(k>1)//保证两个不同的人 { no_handsome.insert(temp); } } } cin>>m; set<int> handsome; for(int i=1;i<=m;i++) { int temp; cin>>temp; if(no_handsome.find(temp)==no_handsome.end()) { if(handsome.find(temp)==handsome.end())//每次输出前要检查是否已经输出过了. { if(!flag) //控制输出空格 { cout<<" "; } printf("%05d",temp); flag=false; } handsome.insert(temp); } } if(handsome.size()==0) { cout<<"No one is handsome"; } }
本文来自博客园,作者:江上舟摇,转载请注明原文链接:https://www.cnblogs.com/LQS-blog/p/16154129.html