NOI
/
1.8编程基础之多维数组
13:图像模糊处理
总时间限制:
1000ms
内存限制:
65536kB
描述
给定n行m列的图像各像素点的灰度值,要求用如下方法对其进行模糊化处理:
1. 四周最外侧的像素点灰度值不变;
2. 中间各像素点新灰度值为该像素点及其上下左右相邻四个像素点原灰度值的平均(舍入到最接近的整数)。
输入
第一行包含两个整数n和m,表示图像包含像素点的行数和列数。1 <= n <= 100,1 <= m <= 100。
接下来n行,每行m个整数,表示图像的每个像素点灰度。相邻两个整数之间用单个空格隔开,每个元素均在0~255之间。
输出
n行,每行m个整数,为模糊处理后的图像。相邻两个整数之间用单个空格隔开。
样例输入
4 5 100 0 100 0 50 50 100 200 0 0 50 50 100 100 200 100 100 50 50 100
样例输出
100 0 100 0 50 50 80 100 60 0 50 80 100 90 200 100 100 50 50 100
全局题号
8167
添加于
2015-04-19
提交次数
33766
尝试人数
13104
通过人数
11917
你的提交记录
# | 结果 | 时间 |
1 | Accepted | 2022-10-29 |
- ©2002-2022 POJ 京ICP备20010980号-1
1. 创建两个二维数组,其中一个是备份。
2.跳过四周,并加上四周加上自己除以5再四舍五入(+.5)。
3.输出。
#include<bits/stdc++.h>
using namespace std;
int a[110][110];
int b[110][110];
int main()
{
int n,m;
cin>>n>>m;
int sum=0;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cin>>a[i][j];
b[i][j]=a[i][j];//复制一份相同的数组用来提供数据
}
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
if(i==1||i==n||j==1||j==m)
{
continue;//跳过四周
}
else
{
a[i][j]=floor((b[i][j]+b[i-1][j]+b[i+1][j]+b[i][1]+b[[j+1])*1.0/5+0.5);//加上四周加上自己除以5再四舍五入
}
}
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cout<<a[i][j]<<" ";
}
cout<<endl;
}
return 0;
}