普及组模拟赛

本程序解决了一个特定的问题:找出发送消息最多的人。通过对消息记录进行排序和比较,确定了发送次数最多的人及其发送次数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2. SLF 的消息记录 (records.c/cpp/pas) 【题目描述】 或许是人气过于旺盛,SLF 的手机一只叮叮叮响个不停。不用说,一定是女孩子发来的 短信。有一天,一直对此毫不在意的 SLF 男神来了兴趣,他想知道给他发消息最多的女孩是 哪一位。女孩的名字均由三个单词组成,由于女孩非常狡猾,她们有的时候会把自己的名字 三个单词进行交换,所以名字的先后顺序不同也被视为是同一个女孩。 给出 n 条消息记录,每条记录包含三个单词,表示一个人,判定两条消息是否一样即 判定三个单词交换顺序后(也可以不交换)是否完全相同,问出现次数最多的消息的出现 的次数。

【输入格式】 第一行一个数 n。 接下来 n 行每行一条消息,三个用空格隔开的字符串,每个字符串只包含大写字母, 且长度大于 0 小于等于 10。 

输出格式】 一行一个数,表示发信息最多的女孩发消息的次数。

【输入样例】 5 BESSIE ELSIE MATILDA FRAN BESSIE INGRID BESSIE ELSIE MATILDA MATILDA INGRID FRAN ELSIE BESSIE MATILDA

【输出样例】 3

【样例解释】 {BESSIE, ELSIE, MATILDA}

【数据规模】 对于 30%的数据,1 ≤ n ≤ 50 对于 50%的数据,1 ≤ n ≤ 250 对于 100%的数据,1 ≤ n ≤ 1000

#include <fstream>
#include <algorithm>

using namespace std;

int n;
string groups[1001];

int main()
{	ifstream fin("records.in"); 
	fin >> n;
	for (int i=0; i<n; i++)
	{
		string str[3];
		fin >> str[0] >> str[1] >> str[2];
		sort(str,str+3);				// sort each group
		groups[i]=str[0]+" "+str[1]+" "+str[2];		// and convert it to a string
	}
	fin.close();

	sort(groups,groups+n);				// sort the entire list

	int best=0;
	for (int i=0,j=1; i<n; i++,j++)
		// continue counting until the next string is different
		if (groups[i]!=groups[i+1])
		{
			if (best<j) best=j;		// update the best count
			j=0;
		}

	ofstream fout("records.out");
	fout << best << "\n";
	fout.close();
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值