1066 图像过滤 (15 point(s))
#include <bits/stdc++.h>
using namespace std;
int main() {
int m, n, a, b, grey;
cin >> m >> n >> a >> b >> grey;
// 读取
int pic[m][n];
for(int i = 0; i < m; i++){
for(int j = 0, tmp; j < n; j++){
cin >> tmp;
pic[i][j] = tmp;
}
}
// 输出
for(int i = 0; i < m; i++){
for(int j = 0, first = 0; j < n; j++){
// 区间内替换
if(a <= pic[i][j] && pic[i][j] <= b)
cout << (first++ ? " " : "") << setw(3) << setfill('0') << grey;
else
cout << (first++ ? " " : "") << setw(3) << setfill('0') << pic[i][j];
}
// 换行
cout << endl;
}
}
上一题从别人那学来的 setw() 以及 setfill() 用来填充高位的 0 就派上用场了。
这里看数据区间的时候要注意 > < 下面的等号 = ,替换区间内的符号下面是多一杠的 ≥ 小于等于。所以判断的时候要加上等号 = 。
浙公网安备 33010602011771号