信息学奥赛一本通 1128:图像模糊处理 | OpenJudge NOI 1.8 13:图像模糊处理
生活随笔
收集整理的這篇文章主要介紹了
信息学奥赛一本通 1128:图像模糊处理 | OpenJudge NOI 1.8 13:图像模糊处理
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
【題目鏈接】
ybt 1128:圖像模糊處理
OpenJudge NOI 1.8 13:圖像模糊處理
【題目考點】
1. 二維數組
2. 四舍五入取整函數
<cmath>中的函數:
double round(double a);
或手動實現:
【解題思路】
以下分析中,行列從1開始數。該二維矩陣有n行m列,行號為1~n,列號為1~m。
- 上下左右四邊灰度值不變,對于元素a[i][j]在各位置時的條件:第1行i == 1,最后一行i == n,第1列j == 1,最后一列j == m。
- 對于不在上下左右四邊的元素a[i][j],其上下左右位置的元素分別為:上a[i-1][j],下a[i+1][j],左a[i][j-1],右a[i][j+1]
將上下左右位置的元素和自身加起來,除以5,結果取四舍五入到整數,即為該點的灰度值。
【題解代碼】
解法1:
#include<bits/stdc++.h> using namespace std; #define N 105 int main() {int n, m, a[N][N], b[N][N];cin>>n>>m;for(int i = 1; i <= n; ++i)//輸入矩陣for(int j = 1; j <= m; ++j)cin >> 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)//如果是四邊,灰度值不變b[i][j] = a[i][j];elseb[i][j] = round((double)(a[i-1][j] + a[i+1][j] + a[i][j-1] + a[i][j+1] + a[i][j]) / 5);//中心的位置灰度值是上下左右中數字的平均}for(int i = 1; i <= n; ++i)//輸出矩陣{for(int j = 1; j <= m; ++j)cout << b[i][j] << ' ';cout << endl;}return 0; }總結
以上是生活随笔為你收集整理的信息学奥赛一本通 1128:图像模糊处理 | OpenJudge NOI 1.8 13:图像模糊处理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 信息学奥赛一本通 1094:与7无关的数
- 下一篇: 信息学奥赛一本通 1073:救援 | O