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

Posted Annetree的博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PAT 乙级 1066. 图像过滤(15)相关的知识,希望对你有一定的参考价值。

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

输入格式:

输入在第一行给出一幅图像的分辨率,即两个正整数M和N(0 < M, N <= 500),另外是待过滤的灰度值区间端点A和B(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

 

 1 #include<cstdio>
 2 #include<iostream>
 3 #include<cmath>
 4 using namespace std;
 5 
 6 int a[505][505];
 7 
 8 void print(int num)
 9 {
10     if(num>=100)
11         printf("%d",num);
12     else if(num>=10)
13         printf("0%d",num);
14     else
15         printf("00%d",num);
16 }
17 
18 int main()
19 {
20     int m,n,l,r,num;
21     scanf("%d%d%d%d%d",&m,&n,&l,&r,&num);
22     for(int i=0;i<m;i++)
23         for(int j=0;j<n;j++)
24         {
25             scanf("%d",&a[i][j]);
26             if(a[i][j]>=l&&a[i][j]<=r)
27                 a[i][j]=num;
28         }
29     for(int i=0;i<m;i++)
30     {
31         print(a[i][0]);
32         for(int j=1;j<n;j++)
33         {
34             printf(" ");
35             print(a[i][j]);
36         }
37         printf("\n");
38     }
39     return 0;;
40 
41 }

 

以上是关于PAT 乙级 1066. 图像过滤(15)的主要内容,如果未能解决你的问题,请参考以下文章

PAT 1066. 图像过滤(15)

1066. 图像过滤(15)

B1066 图像过滤 (15分)

1066. 图像过滤(15)

1066 图像过滤 (15 分)

PAT-乙级-1049 数列的片段和