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 }
  • 相关阅读:
    个人常用Git操作记录
    JavaScript引擎基本原理:Shapes和Inline Caches
    Promise.then(a, b)与Promise.then(a).catch(b)问题详解
    p标签中的文本换行
    Vue初始化
    关于vue的源码调试
    关于extjs表单布局的几种方式
    sublime text3安装、注册及常用插件
    chrome扩展程序开发
    关于Git的简单使用
  • 原文地址:https://www.cnblogs.com/Deribs4/p/4773026.html
Copyright © 2011-2022 走看看