二维数组pic[4][4]={ 0 1 1 0 1 0 1 1 1 1 0 1 0 0 0 1 } 表示一4x4的二值图像,1表示白色像素,0表示黑色像素,编写程序,输出白色像素最多的行号和列号。(数量相同的输出最小行和列号。对于本题示例,输出结果为行号:2,列号:4)
时间: 2023-06-23 17:10:22 浏览: 20
以下是一个 C++ 的实现:
```cpp
#include <iostream>
using namespace std;
int main() {
int pic[4][4] = {{0, 1, 1, 0},
{1, 0, 1, 1},
{1, 1, 0, 1},
{0, 0, 0, 1}};
int max_white = 0; // 记录最大白像素数
int row = 0, col = 0; // 记录最大白像素数的行号、列号
for (int i = 0; i < 4; i++) { // 遍历每一行
int white_count = 0; // 记录当前行的白像素数
for (int j = 0; j < 4; j++) { // 遍历当前行的每一列
if (pic[i][j] == 1) { // 如果当前元素为白色
white_count++; // 白像素数加1
}
}
if (white_count > max_white) { // 如果当前行白像素数更多
max_white = white_count; // 更新最大白像素数
row = i; // 更新最大白像素数的行号
} else if (white_count == max_white && i < row) { // 如果当前行白像素数相同,但行号更小
row = i; // 更新最大白像素数的行号
}
}
max_white = 0; // 重新初始化最大白像素数
for (int j = 0; j < 4; j++) { // 遍历每一列
int white_count = 0; // 记录当前列的白像素数
for (int i = 0; i < 4; i++) { // 遍历当前列的每一行
if (pic[i][j] == 1) { // 如果当前元素为白色
white_count++; // 白像素数加1
}
}
if (white_count > max_white) { // 如果当前列白像素数更多
max_white = white_count; // 更新最大白像素数
col = j; // 更新最大白像素数的列号
} else if (white_count == max_white && j < col) { // 如果当前列白像素数相同,但列号更小
col = j; // 更新最大白像素数的列号
}
}
cout << "行号: " << row + 1 << endl; // 注意行号是从1开始的
cout << "列号: " << col + 1 << endl; // 注意列号是从1开始的
return 0;
}
```
输出结果为:
```
行号: 2
列号: 4
```
说明第2行和第4列都有最多的白像素。