当前位置: 代码迷 >> J2SE >> 二维数组鞍点有关问题
  详细解决方案

二维数组鞍点有关问题

热度:300   发布时间:2016-04-24 02:28:18.0
二维数组鞍点问题
找出一个二维数组的鞍点,
即该位置上的元素的在该行上最
大,在列上最小。也可能没有鞍点。
  二维数组自己随便定义一个 行列都为4。

------解决方案--------------------
Java code
public static void main(String[] args) {        int[][] arr = new int[4][4];        for (int i = 0; i < 4; i++) {            for (int j = 0; j < 4; j++) {                arr[i][j] = i + j;            }        }        for (int i = 0; i < 4; i++) {            int amax=arr[i][0];            int column=0;            for (int j = 1; j < 4; j++) {                if(arr[i][j]>amax)                {                    amax=arr[i][j];                    column=j;                }                }            int row=0;            for(int k=1;k<4;k++)            {                int amin=arr[k][column];                                if(arr[k][column]<amin)                {                    amin=arr[k][column];                    row=k;                }            }            if(row==i)            {                System.out.println("行:"+row);                System.out.println("列:"+column);                System.out.println("值:"+amax);            }        }            }
------解决方案--------------------
Java code
public class andian {    public andian() {    }            public static void main(String[] args) {                int max=0;        boolean cunzai=false;        int min=0;        int hang=0;        int lie=0;        int an[][]=new int[4][4];        System.out.println(" 随机产生的数组为:");        for (int i=0;i<4;i++){//随机产生4×4数组            for(int m=0;m<4;m++){                an[i][m]=(int)(Math.random()*100+1);                System.out.print(an[i][m]+" ");                if(m==3){                    System.out.println("");                }            }        }        //开始判断鞍点的位置         for (int i=0;i<4;i++){            for(int m=0;m<4;m++){//找出行中的最大值及位置                if(an[i][m]>max){                    max=an[i][m];                    hang=i;                    lie=m;                    min=max;                }            }            for(int e=0;e<4;e++){//判断找出的最大值是不是列中的最小值                if(an[e][lie]<min){                    cunzai=false;                    break;                }else{                    cunzai=true;                }            }                     }        if(cunzai){                System.out.println("随机产生的数组存在鞍点: "+min);                System.out.println("位于第"+(hang+1)+"行,第"+(lie+1)+"列。");            }else{                 System.out.println("随机产生的数组不存在鞍点!");            }    }    }
  相关解决方案