PTA-天梯赛---当芸芸众生忙着在朋友圈中发照片的时候。

当芸芸众生忙着在朋友圈中发照片的时候,总有一些人因为太帅而没有朋友。本题就要求你找出那些帅到没有朋友的人。

#include
#include
#include
using namespace std;
int sum,ans,ans1,ans2;
int main() {
     
	int N,K,M,L;//定义的符号与题目中的意义是相同的
	vector<int> vt,vt1,vt2,vt3;
	map<int,bool> mp;
	cin>>N;
	for(int i=0; i<N; i++) {
     
		cin>>K;
		for(int j=0; j<K; j++) {
     
			cin>>M;
			vt.push_back(M);//把所有人的ID压入到vt容器中
		}
	}
	cin>>L;//待查询的人数
	int a[L];//待查询的ID
	for(int i=0; i<L; i++) {
     
		cin>>a[i];
	}
	for(int i=0; i<L; i++) {
     
		for(vector<int>::iterator it=vt.begin(); it!=vt.end(); it++) {
     
			if(a[i]==*it) {
     
				vt1.push_back(a[i]);//找出 待查询的ID与全部的ID相同的ID,并压入vt1容器中
				ans++;//一共有多少个是相同的
				break;//一找到相同的就跳出循环,寻找下一个ID.这样好知道是否有不相同的,
				//方便计算ans,好判断是否有不同的。
			}
		}
	}
	if(ans==L)cout<<"No one is handsome";//如果都是相同的,就是ans==L。
	else {
     
		for(int i=0; i<L; i++) {
     //vt1是 待查询的ID与全部的ID相同的ID;
			for(vector<int>::iterator it1=vt1.begin(); it1!=vt1.end(); it1++) {
     
				if(a[i]!=*it1) ans1++;
			}
			if(ans1==vt1.size())  {
     //找出查询没有的ID;
				vt2.push_back(a[i]);
			}
			ans1=0;
		}
		//但是查询不到的ID中,会有重复的。比如:55555 44444 10000 88888  23333 88888
		//有两个88888,要除去其中的一个88888,且不改变元素原来的位置。
		for(int i=0; i<vt2.size(); i++) {
     //除去重复数字且不改变元素原来的位置。
			if(!mp[vt2[i]]) {
     
				vt3.push_back(vt2[i]);
				mp[vt2[i]]=true;
			}
		}
		for(int i=0; i<vt3.size(); i++) {
     //最后输出且末尾不能有空格。
			ans2++;
			if(ans2==vt3.size())cout<<vt3[i];//判断是否是最后一个数字,如果是就不输出空格								 //
			else cout<<vt3[i]<<" ";
		}
	}
	return 0;
}

。。。。。。。。。
写了那么久只有前面的测试数据通过。
PTA-天梯赛---当芸芸众生忙着在朋友圈中发照片的时候。_第1张图片
希望能够给点建议,后面会继续改正。

你可能感兴趣的:(天梯赛,PTA,c++)