c语言找出二维数组中最大的4个值和其下标
时间: 2025-01-19 14:17:00 AIGC 浏览: 59
在 C 语言中,找到二维数组中的最大四个值及其下标可以采用分治法或者动态规划策略,这里我们提供一种基于线性扫描的方式:
首先,假设有一个 MxN 的二维整数数组 `arr`,我们可以创建一个结构体来存储元素值和它的下标,例如:
```c
typedef struct {
int value;
int row;
int col;
} ValueAndIndex;
```
然后,我们可以编写一个函数来寻找并返回最大的四个元素及其下标:
```c
void findMaxFour(int arr[][N], int M, int N, ValueAndIndex max Four[4]) {
for (int i = 0; i < M; ++i) {
for (int j = 0; j < N; ++j) {
maxFour[0].value = arr[i][j];
maxFour[0].row = i;
maxFour[0].col = j;
// 如果找到了新的最大值,更新其他位置
for (int k = 1; k < 4 && arr[maxFour[k].row][maxFour[k].col] > arr[i][j]; ++k) {
maxFour[k].value = arr[i][j];
maxFour[k].row = i;
maxFour[k].col = j;
}
}
}
}
// 调用这个函数并传递你的二维数组
int main() {
int M, N;
ValueAndIndex maxFour[4];
// ... 先获取数组尺寸和初始化 maxFour 结构体 ...
findMaxFour(arr, M, N, maxFour);
printf("Top 4 largest values and their indices:\n");
for (int i = 0; i < 4; ++i) {
printf("Value: %d, Row: %d, Col: %d\n", maxFour[i].value, maxFour[i].row, maxFour[i].col);
}
return 0;
}
```
这个程序会在遍历过程中保持最大四个值和对应的下标。请注意,如果二维数组的行数不足4个元素,该函数将只返回所有元素。
阅读全文
相关推荐




















