求二维数组鞍点

Dear 丶 2022-08-18 13:16 288阅读 0赞
  1. /** * 问题:找出一个二维数组中的鞍点,即该位置上的元素在该行最大,在该列上最大(也可能没有鞍点) * 思路:先找二位数组每一行的最大值,记录下该最大值的列数,再比较这个数在该列是否最大,若最大则存在. */
  2. import java.util.Scanner;
  3. /** * 问题:找出一个二维数组中的鞍点,即该位置上的元素在该行最大,在该列上最大(也可能没有鞍点) * 思路:先找二位数组每一行的最大值,记录下该最大值的列数,再比较这个数在该列是否最大,若最大则存在. */
  4. public class Main {
  5. static int max_x;
  6. static int max_y;
  7. public static void main(String[] args) {
  8. int m = 5;// 行
  9. int n = 6;// 列
  10. int arr[][] = new int[m][n];
  11. Scanner s = new Scanner(System.in);
  12. // 初始化数组
  13. for (int i = 0; i < m; i++) {
  14. for (int j = 0; j < n; j++) {
  15. arr[i][j] = s.nextInt();
  16. }
  17. }
  18. // 找鞍点
  19. for (int i = 0; i < m; i++) {
  20. max_x = arr[i][0];
  21. boolean flag = true;
  22. // 下面这个for循环执行完后max_x为第i行最大值
  23. for (int j = 1; j < n; j++) {
  24. if (max_x < arr[i][j]) {
  25. max_x = arr[i][j];
  26. max_y = j;
  27. }
  28. }
  29. // System.out.println(max_x);//打印每行最大值
  30. // 判断是否是列的最大值
  31. for (int j2 = 1; j2 < m; j2++) {
  32. if (max_x < arr[j2][max_y]) {
  33. // 如果一个行中最大的元素在这一列中不是最大的,为false
  34. flag = false;
  35. break;
  36. }
  37. }
  38. if (flag) {
  39. System.out.println("存在鞍点位置:" + "arr[" + i + "]" + "[" + max_y
  40. + "]值为:" + max_x);
  41. }
  42. }
  43. }
  44. }

发表评论

表情:
评论列表 (有 0 条评论,288人围观)

还没有评论,来说两句吧...

相关阅读

    相关 数组

    / 问题:找出一个二维数组中的鞍点,即该位置上的元素在该行最大,在该列上最大(也可能没有鞍点) 思路:先找二位数组每一行的最大值,记录下该最大值的列数,再比较这个数

    相关 数组

    题目内容: 给定一个n\n矩阵A。矩阵A的鞍点是一个位置(i,j),在该位置上的元素是第i行上的最大数,第j列上的最小数。一个矩阵A也可能没有鞍点。 你的任务是找出A的鞍点