zoukankan      html  css  js  c++  java
  • pat1054. The Dominant Color (20)

    1054. The Dominant Color (20)

    时间限制
    100 ms
    内存限制
    65536 kB
    代码长度限制
    16000 B
    判题程序
    Standard
    作者
    CHEN, Yue

    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 int main(){
     3     int m, n, x, times = 0, candidate;
     4     scanf("%d%d", &m, &n);
     5     for (int i = 0; i < n; ++i){
     6         for (int j = 0; j < m; ++j){
     7             scanf("%d", &x);
     8             if (times == 0){
     9                 candidate = x;
    10                 ++times;
    11             }
    12             else{
    13                 if (x == candidate)
    14                     ++times;
    15                 else
    16                     --times;
    17             }
    18         }
    19     }
    20     printf("%d
    ", candidate);
    21     return 0;
    22 }

    方法二:map

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <map>
     4 using namespace std;
     5 map<string,int> img;
     6 int main(){
     7     //freopen("D:\INPUT.txt","r",stdin);
     8     int m,n,i,j;
     9     scanf("%d %d",&m,&n);
    10     char color[15];
    11     for(i=0;i<m;i++){
    12         for(j=0;j<n;j++){
    13             scanf("%s",color);
    14             img[color]++;
    15         }
    16     }
    17     map<string,int>::iterator it;
    18     int half=m*n/2+1;
    19     for(it=img.begin();it!=img.end();it++){
    20         if(it->second>=half){
    21             break;
    22         }
    23     }
    24     cout<<it->first<<endl;
    25     return 0;
    26 }
  • 相关阅读:
    2.替换空格
    1.二维数组的查找
    poj 2431 expedition
    python入门第三天
    python入门第二天__练习题
    [Python3.6] print vs sys.stdout.write
    python入门第二天
    使用Flask-mail发送邮件无法连接主机
    KMP
    逆序对 线段树&树状数组 (重制版)
  • 原文地址:https://www.cnblogs.com/Deribs4/p/4773026.html
Copyright © 2011-2022 走看看