一个小小的说明:
每天我会刷几道PAT的题目作为学习热身,每当有一个新的知识点我都很激动的把它们记录下来,生怕忘掉。为了自己看着也方便,我就写在简书里面。但是不可能每天根据做了做多少题就更新几篇文章。想想就累人。所以,每天更新最多两篇,这是我的想法。
如果真的有一些好的知识,不更不行的那种,我计划再单独开一个文章,连续记录不断更新。
原题链接
The Dominant Color
思路:
这个题目的意思很直截了当,根据给出的一堆数字,找出出现最多的。大致一想,解法就不少。书本上给出map的用法,也当做一个map的练习题吧。
关键:
开一个map映射
键:题目给的数字,值:出现的次数
代码如下:
#include <cstdio>
#include <map>
using namespace std;
int main()
{
int m, n, temp;//m:列数 n:行数
scanf("%d %d", &m, &n);
map<int, int> count;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
scanf("%d", &temp);
if (count.find(temp) != count.end())
{
count[temp]++;
}
else
{
count[temp] = 1;
}
}
}
//输入完毕
int k = 0;
int MAX = 0;
for (map<int, int>::iterator it = count.begin(); it != count.end(); it++)
{
if (it->second > MAX)
{
k = it->first;
MAX = it->second;
}
}
printf("%d", k);
return 0;
}
总结
这道题的思路相当简单了。但我们还是要吸取一点经验:
map的作用不仅局限于string与int之间的对应关系,还可以做到记录次数的作用。
map<int,int> count//我觉得很棒棒