跳到主要内容
0%
约 2 分钟

CSP 202104-1 灰度直方图 C++ 100


题目

【题目描述】 一幅长宽分别为n个像素和m个像素的灰度图像可以表示为一个n×m大小的矩阵A。 其中每个元素$A_{ij}$(0≤i<n、0≤j<m) 是一个[0,L)范围内的整数,表示对应位置像素的灰度值。 具体来说,一个8比特的灰度图像中每个像素的灰度范围是[0,128)。 一副灰度图像的灰度统计直方图(以下简称“直方图”)可以表示为一个长度为L的数组h,其中$h[x]$(0≤x<L)表示该图像中灰度值为x的像素个数。显然,h[0]到h[L-1]的总和应等于图像中的像素总数n·m。 已知一副图像的灰度矩阵A,试计算其灰度直方图h[0],h[1],···,h[L-1]。

【输入格式】 输入共n+1行。 输入的第一行包含三个用空格分隔的正整数n、m和L,含义如前文所述。 第二到第n+1行输入矩阵A。 第i+2(0≤i<n)行包含用空格分隔的m个整数,依次为$A_{i0},A_{i1},···,A_{i(m-1)}$

【输出格式】 输出仅一行,包含用空格分隔的L个整数h[0],h[1],···,h[L-1],表示输入图像的灰度直方图。

【样例输入】

4 4 16
0 1 2 3
4 5 6 7
8 9 10 11
12 13 14 15

【样例输出】

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

代码

#include<bits/stdc++.h>

using namespace std;

int main()
{
    int n,m,L,a;
    int h[256]={0};
    cin>>n>>m>>L;
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<m;j++)
        {
            cin>>a;
            h[a]++;
        }
    }
    for(int i=0;i<L;i++)
    {
        cout<<h[i]<<' ';
    }
    return 0;
}

向 AI 提问(基于本文内容)

评论