前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PAT(乙级)1066.图像过滤(15)

PAT(乙级)1066.图像过滤(15)

作者头像
lexingsen
发布2022-02-25 08:16:13
1800
发布2022-02-25 08:16:13
举报
文章被收录于专栏:乐行僧的博客

1066.图像过滤(15)

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

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

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

输入样例:

代码语言:javascript
复制
3 5 100 150 0
3 189 254 101 119
150 233 151 99 100
88 123 149 0 255

输出样例:

代码语言:javascript
复制
003 189 254 000 000
000 233 151 099 000
088 000 000 000 255

题目分析,简单题。

AC代码:

代码语言:javascript
复制
#include <iostream>
#include <cstdio>
using namespace std;

const int max_n = 510;

int vec[max_n][max_n];

int main(){
    //freopen("in.txt", "r", stdin);
    int m, n, a, b, p, tmp;
    scanf("%d%d%d%d%d", &m, &n, &a, &b, &p);
    for(int i=0; i<m; ++i){
        for(int j=0; j<n; ++j){
            scanf("%d", &tmp);
            vec[i][j] = tmp;
        }
    }

    for(int i=0; i<m; ++i){
        for(int j=0; j<n; ++j){
            if(a<=vec[i][j] && b>=vec[i][j])
                vec[i][j] = p;
        }
    }

    for(int i=0; i<m; ++i){
        for(int j=0; j<n; ++j){
            if(vec[i][j]==0)
                cout<<"000";
            else if(0<vec[i][j] && vec[i][j]<=9)
                cout<<"00"<<vec[i][j];
            else if(10<vec[i][j] && vec[i][j]<=99)
                cout<<"0"<<vec[i][j];
            else
                cout<<vec[i][j];
            if(j!=n-1)cout<<" ";

        }
        cout<<endl;
    }
    return 0;
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档