现有一个25303*2的矩阵,现在要删除第一列重复行,保留重复行对应的第二列最大值的矩阵,请编写代码来实现
时间: 2023-03-31 14:00:56 浏览: 32
以下是代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
int n = 25303;
int m = 2;
int i, j, k;
int **matrix = (int **)malloc(n * sizeof(int *));
for (i = ; i < n; i++) {
matrix[i] = (int *)malloc(m * sizeof(int));
}
// 读入矩阵
for (i = ; i < n; i++) {
for (j = ; j < m; j++) {
scanf("%d", &matrix[i][j]);
}
}
// 删除第一列重复行
for (i = ; i < n; i++) {
for (j = i + 1; j < n; j++) {
if (matrix[i][] == matrix[j][]) {
for (k = j; k < n - 1; k++) {
matrix[k][] = matrix[k + 1][];
matrix[k][1] = matrix[k + 1][1];
}
n--;
j--;
}
}
}
// 保留重复行对应的第二列最大值
for (i = ; i < n; i++) {
int max = matrix[i][1];
for (j = i + 1; j < n; j++) {
if (matrix[i][] == matrix[j][]) {
if (matrix[j][1] > max) {
max = matrix[j][1];
}
for (k = j; k < n - 1; k++) {
matrix[k][] = matrix[k + 1][];
matrix[k][1] = matrix[k + 1][1];
}
n--;
j--;
}
}
matrix[i][1] = max;
}
// 输出矩阵
for (i = ; i < n; i++) {
for (j = ; j < m; j++) {
printf("%d ", matrix[i][j]);
}
printf("\n");
}
// 释放内存
for (i = ; i < n; i++) {
free(matrix[i]);
}
free(matrix);
return ;
}
```