蓝桥杯1602 出现最多的字符
题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可
下面的矩阵中包含 ABCDEF六种字符,请问出现最多的字符出现了几次?
FFEEFEAAECFFBDBFBCDA
DACDEEDCCFFAFADEFBBA
FDCDDCDBFEFCEDDBFDBE
EFCAAEECEECDCDECADDC
DFAEACECFEADCBFECADF
DFBAAADCFAFFCEADFDDA
EAFAFFDEFECEDEEEDFBD
BFDDFFBCFACECEDCAFAF
EFAFCDBDCCBCCEADADAE
BAFBACACBFCBABFDAFBE
FCFDCFBCEDCEAFBCDBDD
BDEFCAAAACCFFCBBAAEE
CFEFCFDEEDCACDACECFF
BAAAFACDBFFAEFFCCCDB
FADDDBEBCBEEDDECFAFF
CDEAFBCBBCBAEDFDBEBB
BBABBFDECBCEFAABCBCF
FBDBACCFFABEAEBEACBB
DCBCCFADDCACFDEDECCC
BFAFCBFECAACAFBCFBAF
运行限制
最大运行时间:1s
最大运行内存: 256M
题目信息
- 难度: 简单
- 标签: 2021, 省模拟赛
- 传送门
参考题解
c++版:
#include <bits/stdc++.h> //经典万能文件头
using namespace std;
string s="FFEEFEAAECFFBDBFBCDA"//string 类型的多行初始化,相当于写在一行
"DACDEEDCCFFAFADEFBBA"
"FDCDDCDBFEFCEDDBFDBE"
"EFCAAEECEECDCDECADDC"
"DFAEACECFEADCBFECADF"
"DFBAAADCFAFFCEADFDDA"
"EAFAFFDEFECEDEEEDFBD"
"BFDDFFBCFACECEDCAFAF"
"EFAFCDBDCCBCCEADADAE"
"BAFBACACBFCBABFDAFBE"
"FCFDCFBCEDCEAFBCDBDD"
"BDEFCAAAACCFFCBBAAEE"
"CFEFCFDEEDCACDACECFF"
"BAAAFACDBFFAEFFCCCDB"
"FADDDBEBCBEEDDECFAFF"
"CDEAFBCBBCBAEDFDBEBB"
"BBABBFDECBCEFAABCBCF"
"FBDBACCFFABEAEBEACBB"
"DCBCCFADDCACFDEDECCC"
"BFAFCBFECAACAFBCFBAF";
int ss[200];//根据ascii表的值估计不会范围溢出
int main()
{
for(char q:s){//range for each用法
ss[q]++; //利用了桶的思想,以字母本身的ascii值作为数组下标
//数组的值即为字母出现次数
//这里不需要写成ss[(int)q]++,q会根据ascii表内值自动转换
}
cout<<*max_element(ss,ss+200);//数组内求最值的方便函数,参数为起始地址,左闭右开
return 0;
}
tip:
- c++中string类型的多行初始化,效果等同于写在一行
- 桶思想的最简单运用来统计字符出现次数
- max_element(地址/迭代器,地址/迭代器),经典左开右闭,返回值为地址
- 通过*max_elemet直接得到目标元素
- 用法2:通过地址/迭代器相减(max_element(a,a+5)-a)得到目标元素下标