zoukankan      html  css  js  c++  java
  • zoj 2857 Image Transformation

    Image Transformation

    Time Limit: 2 Seconds      Memory Limit: 65536 KB

    The image stored on a computer can be represented as a matrix of pixels. In the RGB (Red-Green-Blue) color system, a pixel can be described as a triplex integer numbers. That is, the color of a pixel is in the format "r g b" where r, g and b are integers ranging from 0 to 255(inclusive) which represent the Red, Green and Blue level of that pixel.

    Sometimes however, we may need a gray picture instead of a colorful one. One of the simplest way to transform a RGB picture into gray: for each pixel, we set the Red, Green and Blue level to a same value which is usually the average of the Red, Green and Blue level of that pixel (that is (r + g + b)/3, here we assume that the sum of r, g and b is always dividable by 3).

    You decide to write a program to test the effectiveness of this method.

    Input

    The input contains multiple test cases!

    Each test case begins with two integer numbers N and M (1 <= NM <= 100) meaning the height and width of the picture, then three N * M matrices follow; respectively represent the Red, Green and Blue level of each pixel.

    A line with N = 0 and M = 0 signals the end of the input, which should not be proceed.

    Output

    For each test case, output "Case #:" first. "#" is the number of the case, which starts from 1. Then output a matrix of N * M integers which describe the gray levels of the pixels in the resultant grayed picture. There should be N lines with M integers separated by a comma.

    Sample Input

    2 2
    1 4
    6 9
    2 5
    7 10
    3 6
    8 11
    2 3
    0 1 2
    3 4 2
    0 1 2
    3 4 3
    0 1 2
    3 4 4
    0 0

    Sample Output

    Case 1:
    2,5
    7,10
    Case 2:
    0,1,2
    3,4,3

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <vector>
     4 using namespace std;
     5 int main(){
     6     vector<int> r, g, b;
     7     int n, m, test = 0, i, t;
     8     while(cin >> n >> m){
     9         if(n == 0 && m == 0)
    10             break;
    11         test++;
    12         r.clear();
    13         g.clear();
    14         b.clear();
    15         for(i = 0; i < n * m; i++){
    16             cin >> t;
    17             r.push_back(t);
    18         }
    19         for(i = 0; i < n * m; i++){
    20             cin >> t;
    21             g.push_back(t);
    22         }
    23         for(i = 0; i < n * m; i++){
    24             cin >> t;
    25             b.push_back(t);
    26         }
    27         cout << "Case " << test << ":" << endl;
    28         for(i = 0; i < n * m; i++){
    29             cout << (r[i] + g[i] + b[i]) / 3;
    30             if((i + 1) % m == 0)
    31                 cout << endl;
    32             else
    33                 cout << ",";
    34         }
    35     }
    36     //system("pause");
    37     return 0;
    38 }
  • 相关阅读:
    毒丸模式【其他模式】
    对象池模式【其他模式】
    双重校验锁模式【其他模式】
    回调模式【其他模式】
    命令模式【行为模式】
    备忘录模式【行为模式】
    Linux
    Cassandra Package installation directories
    cqlsh script
    Spring boot cassandra
  • 原文地址:https://www.cnblogs.com/qinduanyinghua/p/6525570.html
Copyright © 2011-2022 走看看