二维整型数组的“最大点”.c 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. #include <stdio.h>
  2. int main() {
  3. int n, m, i, j;
  4. // 读取二维数组的行数和列数
  5. scanf("%d %d", &n, &m);
  6. int arr[n][m];
  7. // 读取二维数组的元素
  8. for (i = 0; i < n; i++) {
  9. for (j = 0; j < m; j++) {
  10. scanf("%d", &arr[i][j]);
  11. }
  12. }
  13. // 查找每行的最大值和最大值所在的列
  14. int row_max[n];
  15. int row_max_col[n];
  16. for (i = 0; i < n; i++) {
  17. row_max[i] = arr[i][0];
  18. row_max_col[i] = 0;
  19. for (j = 1; j < m; j++) {
  20. if (arr[i][j] > row_max[i]) {
  21. row_max[i] = arr[i][j];
  22. row_max_col[i] = j;
  23. }
  24. }
  25. }
  26. // 查找每列的最大值
  27. int col_max[m];
  28. for (j = 0; j < m; j++) {
  29. col_max[j] = arr[0][j];
  30. for (i = 1; i < n; i++) {
  31. if (arr[i][j] > col_max[j]) {
  32. col_max[j] = arr[i][j];
  33. }
  34. }
  35. }
  36. // 查找最大点
  37. for (i = 0; i < n; i++) {
  38. int max_val = row_max[i];
  39. int col_idx = row_max_col[i];
  40. if (max_val == col_max[col_idx]) {
  41. printf("%d %d %d\n", max_val, i + 1, col_idx + 1);
  42. }
  43. }
  44. return 0;
  45. }