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
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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 }
总结:
1、题意:找出出现次数最多的数。 由于数字的范围很大,将其作为下标建立哈希表将会开一个超限的数组。所以使用map<int, int>。