「鞍点java」找出二维数组的鞍点

博主:adminadmin 2022-12-27 14:12:07 66

今天给各位分享鞍点java的知识,其中也会对找出二维数组的鞍点进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

看我这个程序有什么问题 用java程序写鞍点

概念错了!!!行中最大,列中最小

package web;

/**

 * 在规格矩阵中,一个数在所在行中是最大值,在所在列中是最小值,则被称为鞍点

 */

public class SaddlePoint

{

public static void main ( String[] args )

{

int a[][] = { { 2, 1, 1118, 1 }, { 1, 3, 111, 21 }, { 2, 9, 11111, 1 } };

findSaddlePoints (a);

}

public static void findSaddlePoints ( int[][] array )

{

String colString = "|";

// 创建列中的行

for ( int i = 0; i  array[0].length; i++ ) // 规格矩阵列

{

int colMin = Integer.MAX_VALUE;

int row = -1;

for ( int j = 0; j  array.length; j++ ) // 行

{

if (array[j][i]  colMin)

{

colMin = array[j][i];

row = j;

}

}

colString += row + "," + i + "," + colMin + "|";

}

String rowString = "|";

for ( int j = 0; j  array.length; j++ )

{

int rowMax = Integer.MIN_VALUE;

int col = -1;

for ( int k = 0; k  array[j].length; k++ ) // 不同列

{

if (array[j][k]  rowMax)

{

rowMax = array[j][k];

col = k;

}

}

rowString += j + "," + col + "," + rowMax + "|";

}

String[] s1 = colString.split ("\\|");

String[] s2 = rowString.split ("\\|");

for ( String ss1 : s1 )

{

for ( String ss2 : s2 )

{

if (!"".equals (ss1)  ss1.equals (ss2))

{

String[] sx = ss1.split (",");

System.out.println ("SaddlePoint is : (" + sx[0] + ", " + sx[1] + ") " + sx[2]);

}

}

}

}

}

java二维数组求鞍点

package andian;

public class DoMain {

public static void main(String[] args) {

int[][] num = new int[][]{{11,8,3},{4,15,6},{7,8,9}};

getAnDian(num);

}

private static void getAnDian(int[][] num){

if(num == null || num.length == 0 || num[0].length == 0){

System.out.println("未传入数组或传入数组不正确!");

return;

}

int h = num.length;//二维数组的行数

int v = num[0].length;//二维数组的列数

for(int i = 0; i h; i++){

for(int j = 0; j v; j++){

System.out.print(num[i][j] + "\t");

}

System.out.println();

}

int temp = 0;

int index = 0;

boolean flag = true;

for(int i = 0; i h; i++){

temp = num[i][0];

flag = true;

for(int j = 1; j v; j++){

if(temp num[i][j]){

temp = num[i][j];

index = j;

}

}

for(int k = 0; k h; k++){

if(temp num[k][index]){

System.out.printf("第%d行没有鞍点\n",i+1);

flag = false;

break;

}

}

if(flag)

System.out.printf("第%d行的鞍点为%d\n",i+1,temp);

}

}

}

java从键盘输入一个数组,找出其中的鞍点

/*

            程序的功能:

            求任意的一个m×n矩阵的鞍点——鞍点是指该位置上的元素在该行上为最大、在该列上为最小,

            矩阵中可能没有鞍点,但最多只有一个鞍点。

    m、n(2=m=20、2=n=20)及矩阵元素从键盘输入(只考虑int型和每行、每列中没有并列最大/最小的情况)。

    */

    public static void main(String[] args) {

        int[][] arr = new int[20][20];

        int m, n;

        int max, min;

        int maxHPos, maxLPos, minHPos, minLPos;

        int flag = 0;

        Scanner sc = new Scanner(System.in);

        System.out.println("请输入m的值:");

        m = sc.nextInt();

        System.out.println("请输入n的值:");

        n = sc.nextInt();

        /* 从键盘输入m×n矩阵,并存放到数组arr中 */

        System.out.println("请输入矩阵的值:");

        for (int i = 0; i  m; i++) {

            for (int j = 0; j  n; j++) {

                arr[i][j] = sc.nextInt();

            }

        }

        /* 在矩阵中找鞍点 */

        for (int i = 0; i  m; i++) {

            /* 找第i行的最大值及最大值的下标(包括行标和列标),i的值从0开始 */

            max = arr[i][0];

            maxHPos = i;

            maxLPos = 0;

            for (int j = 1; j  n; j++) {

                if (arr[i][j]  max) {

                    max = arr[i][j];

                    maxHPos = i;

                    maxLPos = j;

                }

            }

            /* 在第i行的最大值所在列找该列的最小值及其下标 */

            min = arr[0][maxLPos];

            minHPos = 0;

            minLPos = maxLPos;

            for (int k = 1; k  m; k++) {

                if (arr[k][maxLPos]  min) {

                    min = arr[k][maxLPos];

                    minHPos = k;

                    minLPos = maxLPos;

                }

            }

            /* 判断第i行的最大值是否是第i行最大值所在列的最小值,如果是,找到鞍点*/

            if ((maxHPos == minHPos)  (maxLPos == minLPos)) {

                System.out.println(String.format("有鞍点:arr[%d][%d]=%d", maxHPos,

                    maxLPos, arr[maxHPos][maxLPos]));

                flag = 1; //给变量flag赋值1,表示鞍点已找到

                break; //鞍点已找到,结束查找过程

            }

        }

        if (0 == flag) //flag的值为0,表示在矩阵中没有找到鞍点

        {

            System.out.println("没有鞍点");

        }

    }

关于JAVA鞍点问题的编程

public class Text {

public static void main(String[] args){

int aa[][] = new int[6][6];

for(int i = 0;i6;i++){

for(int j = 0;j6;j++){

aa[i][j]=new Random().nextInt(3);

System.out.print(aa[i][j]+" ");

}

System.out.println();

}

int max = 0;

int min = 100;

int flag = 0;

int flag2 = 0;

for(int i=0;i6;i++){

for(int j=0;j6;j++){

if(aa[i][j]max){

max=aa[i][j];

flag = j;

}

}

for(int k=0;k6;k++){

if(aa[k][flag]min){

min = aa[k][flag];

flag2 = k;

}

}

if(flag2 == i){

System.out.println(i +":" + flag +"是按点");

System.out.println(aa[i][flag]);

}

max = 0;

min = 100;

flag = 0;

flag2 = 0;

}

}

}

关于鞍点java和找出二维数组的鞍点的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-12-27,除非注明,否则均为首码项目网原创文章,转载请注明出处。