概述
7-1 气球升起来 (15 分)
程序设计竞赛时,赛场升起各色气球多么激动人心呀!志愿者送气球忙得不亦乐乎,观战的某人想知道目前哪种颜色的气球送出最多。
输入格式:
测试数据有多组,处理到文件尾。每组数据先输入一个整数n(0<n≤5000)表示分发的气球总数。接下来输入n行,每行一个表示颜色的字符串(长度不超过20且仅由小写字母构成)。
输出格式:
对于每组测试,输出出现次数最多的颜色。若出现并列的情况,则只需输出ASCII码值最小的那种颜色。
输入样例:
3 pink red pink
输出样例:
pink
,
这题方法是:录入完成后排下序,从后往前找
,
#define _CRT_SECURE_NO_WARNINGS
#include <bits/stdc++.h>
#define endl 'n'
using namespace std;
typedef long long ll;
struct name {
string nu;
int number;
}nas[50005];
void sorts(int l, int r) {//手写的快排,为了适应该题。也可以用qsort
int p;
if (l < r) {
p = l;
int index = p + 1;
for (int i = index; i <= r; i++) {
if (nas[i].number < nas[p].number) {
struct name t = nas[i];
nas[i] = nas[index];
nas[index] = t;
index++;
}
else if (nas[i].number == nas[p].number) {
if (nas[i].nu < nas[p].nu) {
struct name t = nas[i];
nas[i] = nas[index];
nas[index] = t;
index++;
}
}
else continue;
}
struct name t = nas[p];
nas[p] = nas[index - 1];
nas[index - 1] = t;
p = index - 1;
sorts(l, p - 1);
sorts(p + 1, r);
}
}
int main()
{
//ios::sync_with_stdio(false);
int n;
while (scanf("%d", &n) != EOF) {
memset(nas, 0, sizeof(nas));
string maxname;
int low = 0;
for (int i = 0; i < n; i++) {
int ans = 1;
string ps;
cin >> ps;
for (int j = 0; j < low; j++) {
if (nas[j].nu == ps) {
ans = 0;
nas[j].number++;
break;
}
}
if (ans == 1) {
nas[low].nu = ps;
nas[low].number++;
low++;
}
}
/*for (int u = 0; u < 2; u++) {
cout << nas[u].nu << endl;
}*/
//cout << endl;
sorts(0, low - 1);
int qw = nas[low - 1].number;
int place = low - 1;
for (int u = low - 2; u >= 0; u--) {
if (nas[u].number == qw) {
place = u;
continue;
}
else if (nas[u].number < qw) {
break;
}
}
cout << nas[place].nu << endl;
}
return 0;
}
最后
以上就是甜蜜香氛为你收集整理的气球升起来的全部内容,希望文章能够帮你解决气球升起来所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复