A1054. The Dominant Color

Behind the scenes in the computer's memory, color is always talked about as a series of 24 bits of information for each pixel. In an image, the color with the largest proportional area is called the dominant color. A strictly dominant color takes more than half of the total area. Now given an image of resolution M by N (for example, 800x600), you are supposed to point out the strictly dominant color.

Input Specification:

Each input file contains one test case. For each case, the first line contains 2 positive numbers: M (<=800) and N (<=600) which are the resolutions of the image. Then N lines follow, each contains M digital colors in the range [0, 224). It is guaranteed that the strictly dominant color exists for each input image. All the numbers in a line are separated by a space.

Output Specification:

For each test case, simply print the dominant color in a line.

Sample Input:

5 3
0 0 255 16777215 24
24 24 0 0 24
24 0 24 24 24

Sample Output:

24
 1 #include<cstdio>
 2 #include<iostream>
 3 #include<algorithm>
 4 #include<map>
 5 using namespace std;
 6 map<int, int> mp;
 7 int main(){
 8     int M, N, maxColor, maxN = -1, temp;
 9     scanf("%d %d", &M, &N);
10     for(int i = 0; i < M; i++){
11         for(int j = 0; j < N; j++){
12             scanf("%d", &temp);
13             if(mp.count(temp) == 0){
14                 mp[temp] = 1;
15             }else{
16                 mp[temp] = mp[temp] + 1;
17             }
18             if(mp[temp] > maxN){
19                 maxN = mp[temp];
20                 maxColor = temp;
21             }
22         }
23     }
24     printf("%d", maxColor);
25     cin >> N;
26     return 0;
27 }
View Code

总结:

1、题意:找出出现次数最多的数。 由于数字的范围很大,将其作为下标建立哈希表将会开一个超限的数组。所以使用map<int, int>。

原文地址:https://www.cnblogs.com/zhuqiwei-blog/p/8526118.html