PAT A1054 The Dominant Color (20分)

一个小小的说明:

每天我会刷几道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//我觉得很棒棒

我的码云

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。