RE求助
查看原帖
RE求助
408071
TankYu楼主2021/8/22 17:05
#include <iostream>
#include <cmath>
#include <cstdio>
#include <algorithm>
#include <cstring>
#define D double
#define LD long double
#define LL long long
#define ULL unsigned long long
#define S string
using namespace std;

struct xy
{
	S name;
	S sos;
	int find_()//查找sos个数
	{
		int s = 0;
		int k = 0;
		int f_ = 0;
		while (s != -1)
			{
				s = sos.find("sos", s);
				sos[s + 1] = sos[s] = '1';
				//去重(sosos -> 11sos -> 1111s)
				k++;
			}
		return k - 1;
	}
	int sum;
} a[100];

S sort_name[101][101];
//桶排,第一个下标存sos个数,第二个存是第几个
int sort_k[101];
//求有i个sos的有几个

int main()
{
	int n;
	cin >> n;
	for (int i = 0; i < n; i++)
		{
			cin >> a[i].name >> a[i].sos;
		}
	//输入名字和呼救
	int maxsum = 0;
	//标记最大SOS个数
	for (int i = 0; i < n ; i++)
		{
			a[i].sum = max(0, a[i].find_());
			//查找sos个数
			maxsum = max(maxsum, a[i].sum);
			//更新最大值
			sort_name[a[i].sum][sort_k[a[i].sum]++] = a[i].name;
			//记录当前的sos个数的名字
		}
	for (int i = 0; i < sort_k[maxsum]; i++)
		{
			cout << sort_name[maxsum][i] << ' ';
			//输出
		}
	cout << endl << maxsum;
	return 0;
}

2021/8/22 17:05
加载中...