当前位置:
首页 >
[蓝桥杯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容器的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 趣输入怎么赚钱
- 下一篇: [蓝桥杯2018决赛]三角形面积-数论