L1-020 帅到没朋友

一、题目

L1-020 帅到没朋友_第1张图片

二、解题思路

  1. set:(k>1)判断有朋友圈的人是否有朋友,将有朋友的人存放在一个集合里 fri.insert(t) ,(query.count(t)==0) 判断是否需要查询,(fri.count(t)==0) 判断是否有朋友 。
  2. list:(k>1)判断有朋友圈的人是否有朋友,将有朋友的人存放在一个集合里 fri.insert(t) ,(fri.count(t)==0) 判断是否有朋友,并将没有朋友的存放在 list 里 query.push_back(t) ,循环输出头节点 query.front() ,并将保存头节点的数据的节点删除 remove(query.front()) 。
  3. 数组:(k>1)判断有朋友圈的人是否有朋友,将有朋友的人存放在一个数组里,输入待查询的人并将重复的去掉,遍历 query 数组,通过遍历 fri 数组判断是否有朋友。注意:数组这样判断最后一个测试点会运行超时。

三、代码

        set

#include
using namespace std;
#include
int main()
{
	int n,m,cot=0;
	set fri,query;
	cin>>n;
	while(n--)
	{
		int k;
		cin>>k;
		if(k>1)
		{
			while(k--)
			{
				int t;
				cin>>t;
				fri.insert(t);
			}			
		}
		else
		{
			int t;
			cin>>t;
		}
	}
	cin>>m;
	while(m--)
	{
		int t;
		cin>>t;
		if(query.count(t)==0)
		{
			query.insert(t);
			if(fri.count(t)==0)
			{
				cot++;
				if(cot>1)
				{
					cout<<" ";
				}
				printf("%05d",t);
			}
		}
	}
	if(cot==0)
	{
		cout<<"No one is handsome";
	}
	return 0;
}

        list

	while(m--)
	{
		int t;
		cin>>t;
		if(fri.count(t)==0)
		{
			query.push_back(t);
		}
	}
	if(query.size()==0)
	{
		cout<<"No one is handsome";
	}
	else
	{
		printf("%05d",query.front());
		query.remove(query.front());
		while(query.size()>0)
		{
			printf(" %05d",query.front());
			query.remove(query.front());
		}
	}

        数组(注意:最后一个测试点会运行超时)

//!!!最后一个测试点运行超时
#include
using namespace std;
int main()
{
	int n,m,kk=0,kkk=0,fri[100005],query[10005],cot=0;
	cin>>n;
	while(n--)
	{
		int k;
		cin>>k;
		if(k>1)
		{
			for(int i=0;i>fri[kk++];
			}
		}
		else
		{
			int t;
			cin>>t;
		}
	} 
	cin>>m;
	for(int i=0;i>t;
		bool flag=true;
		for(int j=0;j1)
			{
				cout<<" ";
			}
			printf("%05d",query[i]);
		}
	}
	if(cot==0)
	{
		cout<<"No one is handsome";
	}
	return 0;
}

四、总结

  1. 集合的 insert() , count() 。
  2. list 的 push_back() , front() , remove() 。

你可能感兴趣的:(c++)