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 }
  • 相关阅读:
    IE10/IE9 Click Enter will trigger submission
    错误代码以及错误消息提示-如何更好地管理与维护消息资源
    Redmine2.6.1 升级与Agile插件安装
    编译安装的 mysql apache 用 service mysqld start 来启动
    编译安装php 5.5 缺少依赖包 及解决方案
    linux 下mysql的启动 、调试、排错
    linux 的 磁盘操作
    mysql 触发器的创建 修改 删除
    创建mysql存储过程,调用 及删除
    存储函数的创建 删除 修改
  • 原文地址:https://www.cnblogs.com/qinduanyinghua/p/6525570.html
Copyright © 2011-2022 走看看