PAT乙级真题1066 || 图像过滤(详解,C/C++示例,测试点分析)

微信公众号:计算机黑科学大全
【欢迎关注微信公众号:计算机黑科学大全,对话框回复:PAT乙级真题】获取全部真题详解及代码示例
个人博客地址:https://mzwang.top

图像过滤

题目描述:

图像过滤是把图像中不重要的像素都染成背景色,使得重要部分被凸显出来。现给定一幅黑白图像,要求你将灰度值位于某指定区间内的所有像素颜色都用一种指定的颜色替换。

输入格式:

输入在第一行给出一幅图像的分辨率,即两个正整数 MN(0<M,N≤500),另外是待过滤的灰度值区间端点 AB(0≤A<B≤255)、以及指定的替换灰度值。随后 M 行,每行给出 N 个像素点的灰度值,其间以空格分隔。所有灰度值都在 [0, 255] 区间内。

输出格式:

输出按要求过滤后的图像。即输出 M 行,每行 N 个像素灰度值,每个灰度值占 3 位(例如黑色要显示为 000),其间以一个空格分隔。行首尾不得有多余空格。

输入样例:

3 5 100 150 0
3 189 254 101 119
150 233 151 99 100
88 123 149 0 255

输出样例:

003 189 254 000 000
000 233 151 099 000
088 000 000 000 255

题目来源:PAT乙级1066
作者:CHEN, Yue
单位:浙江大学

问题解决:

解题思想

简单逻辑题。

代码示例(C/C++)

小提示:请将以下代码保存为.cpp格式(C++程序)左右滑动代码以查看完整代码(复制本文链接到电脑端浏览效果更佳)

#include 
using namespace std;
int main() {
    int m, n, a, b, c;
    scanf("%d%d%d%d%d", &m,&n,&a,&b,&c);
    while(m--) {
        int flag = 1;
        for(int i = 0; i < n; i++) {
            int tmp;
            scanf("%d", &tmp);
            if(tmp >= a&&tmp <= b) {
                tmp = c;
            }
            if(flag) {
                printf("%03d", tmp);
                flag = 0;
            }
            else {
                printf(" %03d",tmp);
            }
        }
        printf("\n");
    }
    return 0;
}

微信号:aiyoutao76

你可能感兴趣的:(PAT乙级真题详解)