题干
本题目要求输入一个存放灰度图像的二维数组并计算该图像的焦点像素的位置。题目定义一个像素周围3X3范围内的9个像素的平均灰度值为该像素的亮度系数,亮度系数最大的像素为焦点像素。题目设定图像之外的灰度值都是0。
输入格式:
第一行是灰度图像的高度h(h<=500)和宽度w(w<=600);
接下来是存放灰度图像的二维数组,灰度值取值范围[0, 255]。
输出格式:
输出第一个焦点像素所在位置,即空格分隔的行号与列号。所谓“第一个”按从上到下从左到右的顺序而定。
输入样例:
10 8
1 1 1 1 1 1 1 4
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 5 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 3
1 1 1 1 1 1 1 1
1 1 1 3 1 1 1 1
1 1 1 3 1 1 1 1
1 1 1 2 1 1 1 1
输出样例:
8 2
解答过程
#include <stdio.h>
#define MAX_HEIGHT 501
#define MAX_WIDTH 601
int main(){
int height,width;
int image[MAX_HEIGHT][MAX_WIDTH];
int max_brightness=0;
int max_row=0,max_col=0;
scanf("%d %d", &height, &width);
for(int i=0;i<height;i++){
for(int j=0;j<width;j++){
scanf("%d", &image[i][j]);
}
}
for(int i=0;i<height;i++){
for(int j=0;j<width;j++){
int brightness=0;
for(int x=i-1;x<=i+1;x++){
for(int y=j-1;y<=j+1;y++){
if(x>=0&&x<height&&y>=0&&y<width){
brightness += image[x][y];
}else{
brightness += 0;
}
}
}
if(brightness > max_brightness){
max_brightness=brightness;
max_row=i;
max_col=j;
}
}
}
printf("%d %d\n",max_row,max_col);
return 0;
}