欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

[蓝桥杯2018初赛]次数差-模拟,map容器

发布时间:2023/12/4 34 豆豆
生活随笔 收集整理的这篇文章主要介绍了 [蓝桥杯2018初赛]次数差-模拟,map容器 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

题目描述

x星球有26只球队,分别用a~z的26个字母代表。他们总是不停地比赛。
在某一赛段,哪个球队获胜了,就记录下代表它的字母,这样就形成一个长长的串。
国王总是询问:获胜次数最多的和获胜次数最少的有多大差距?

输入
输入存在多组数据,对于每组数据:
输入一行包含一个串,表示球队获胜情况(保证串的长度<1000)

输出
对于每组数据:输出一个数字,表示出现次数最多的字母比出现次数最少的字母多了多少次。

样例输入
abaabcaa
bbccccddaaaacccc

样例输出
4
6

代码如下:

#include <iostream> #include <cstring> using namespace std; string a; const int N = 30; int cnt[N]; bool st[N];int main() {while (cin >> a) {memset(cnt, 0, sizeof(cnt));for (int i = 0; i < a.size(); i++) {cnt[a[i] - 'a']++;st[a[i] - 'a'] = true;}int minv = 200;int maxv = -1;for (int i = 0; i < 26; i++) {if (st[i]) {maxv = max(cnt[i], maxv);minv = min(minv, cnt[i]);}}cout << maxv - minv << endl;}return 0; }

map容器写法代码如下:

#include <iostream> #include <map> #include <cstring> #include <algorithm> using namespace std; const int N = 1010;int main() {string a;while (cin >> a) {map<char, int>mp;int len = a.length();for (int i = 0; i < len; i++) {mp[a[i]]++;}int maxv = -1, minv = 999999;for (int i = 0; i < len; i++) {maxv = max(maxv, mp[a[i]]);minv = min(minv, mp[a[i]]);}cout << maxv - minv << endl;}return 0; }

总结

以上是生活随笔为你收集整理的[蓝桥杯2018初赛]次数差-模拟,map容器的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。