首页 > 代码库 > PAT 乙级 1066. 图像过滤(15)
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)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。