wu


私信TA

用户名:cncfvc

访问量:215393

签 名:

读研狗没有时间刷题了~~

等  级
排  名 2
经  验 36026
参赛次数 8
文章发表 265
年  龄 25
在职情况 学生
学  校 电子科技大学
专  业 通信工程

  自我简介:

写代码 真好玩 ~

一道不算很难的题  

只需注意getline()的用法即可
参考代码:

#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
struct ST
{
	string str;
	int num=1;
	int flag=0;
}a[1005];
bool comp(ST a,ST b)
{
	return a.num>b.num;
}
bool comp1(ST c,ST d)
{
	return c.str<d.str;
 } 
int main()
{
	//freopen("data.in.txt","r",stdin);
	//freopen("data.out.txt","w",stdout);
	int n;
	while(cin>>n)
	{
		string str;
		str="\n";//当同时使用cin>>,getline()时,需要注意的是,在cin>>输入流完成之后,
		//getline()之前,需要通过str="\n";getline(cin,str);的方式将回车符作为输入流cin
		//以清除缓存,
		getline(cin,str); 
		for(int i=0;i<n;i++)
		{
			getline(cin,a[i].str);//读入字符串 可以接收空格
			//cout<<a[i].str<<endl;
		}
		for(int i=0;i<n;i++)
		{
			for(int j=i+1;j<n;j++)
			{
				if(a[i].str==a[j].str&&a[j].flag==0)
				{
					a[j].flag=1;
					a[i].num++; //统计出每个字符串出现的次数
				}
			}
		}
		sort(a,a+n,comp);//按照出现的次数从大到小排序
		int k=0;
		while(a[k].num==a[k+1].num)//统计有没有出现次数最多的字符串有很多个这种情况
		{
			k++;
		}
		sort(a,a+k+1,comp1);//将这些字符串按照字典顺序排序
		for(int i=0;i<=k;i++)
		{
			cout<<a[i].str<<endl;//输出结果
		}
		
	}
return 0;	
}


 

0.0分

1 人评分

  评论区