您的位置:

java中马鞍点的问题(java找鞍点)

本文目录一览:

java输出马鞍数

package com.njty.test;

/**

* 马鞍数

* @author Administrator

*

*/

public class MAS {

/**

* @param args

*/

public static void main(String[] args) {

//定义二维数组

int arrays[][] = {

{5,6,3,8,9},

{4,5,6,7,8},

{3,4,5,2,1},

{2,3,4,9,0},

{1,2,5,4,8}

};

boolean flag = true; //用于标记是否是马鞍数

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

int tempM = arrays[i][0]; //首先将第一行第一列数假设就是马鞍数

int tempi = 0; //用于行判断

int tempj = 0; //用于存储每行最小数所在的列数

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

if(arrays[i][j] tempM){//找到行中最小的数

tempM = arrays[i][j];

tempj = j; //保存最小数的列数

}

}

while(tempi 5){

if(tempM arrays[tempi][tempj]){//判断是否是列中最大的数

flag = false; //不符合条件则将标记置为false

}

tempi++;

}

if(flag){

System.out.println("马鞍数是 第"+(i+1)+"行第"+(tempj+1)+"列的数:"+tempM);

}

}

if(!flag){

System.out.println("该组数中不存在马鞍数!");

}

}

}

设计一个Java程序,查找二维数组中的马鞍点(本行中最小、但本列中最大的点。假设二维数组中没有重复数据

#include#defineN10#defineM10voidmain(){inti,j,k,m,n,flag1,flag2,a[N][M],max,maxj;printf("输入行数n:");scanf("%d",n);printf("\n输入列数m:");scanf("%d",m);for(i=0;imax){max=a[i][j];maxj=j;}for(k=0,flag1=1;ka[k][maxj])flag1=0;if(flag1){printf("\n第%d行第%d列的%d是鞍点\n",i,maxj,max);flag2=1;}}if(!flag2)printf("\n矩阵无鞍点!\n");}

java高手进用java找马鞍数

//文件保存成Test.java,数组元素我是随机生成的,可能没有鞍点,你可以把//那个maxtrix数组元素改成自己的数组元素,N是矩阵维数,可以调整

import java.util.Random;

public class Test {

public static void main(String[] args) {

final int N = 5;

Random rand = new Random();

int matrix[][] = new int[N][N];

int i;

int j;

int k;

int max;

int col;

boolean found = true;

for(i = 0; i N; i++) {

for(j = 0; j N; j++)

{

matrix[i][j] = 1+ rand.nextInt(25);

System.out.printf("%3d",matrix[i][j]);

}

System.out.println();

}

i = 0;

while(i N)

{

max = matrix[i][0];

col = 0;

found = true;

for(j = 1; j N; j++)

{

if(max matrix[i][j])

{

max = matrix[i][j];

col = j;

}

}

for(k = 0; k N; k++)

{

if(max matrix[k][col])

{

found = false;

break;

}

}

if(found)

{

System.out.printf("鞍点是%d\n", max);

break;

}

else

i++;

}

if(!found)

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从键盘输入一个数组,找出其中的鞍点

/*

            程序的功能:

            求任意的一个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

class mypoint

{

public static void main (String args[])

{

int a[][]={{1,2,3,4,5},{7,3,4,5,6},{2,1,5,4,3},{5,3,6,5,4}};

int i,j,temp;

int maxa[][]=new int [4][5];

int mina [][]=new int [4][5];

//求出行中最小值并标记

for(i=0;ia.length;i++)

{

temp=a[i][0];

for(j=1;ja[i].length;j++)

if (a[i][j]temp)

temp=a[i][j];

for (j=1;ja[i].length;j++)

if(a[i][j]==temp)

mina[i][j]=1;

}

//求出列中最大值并标记

for(j=0;ja[0].length;j++)

{

temp=a[0][j];

for(i=1;ia.length;i++)

if (a[i][j]temp)

temp=a[i][j];

for (i=1;ia.length;i++)

if(a[i][j]==temp)

maxa[i][j]=1;

}

//打印输出矩阵

for(i=0;ia.length;i++)

{

for(j=0;ja[i].length;j++)

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

System.out.println();

}

//求马鞍点并打印输出

for(i=0;ia.length;i++)

{

for(j=0;ja[i].length;j++)

if(mina[i][j]+maxa[i][j]==2)

System.out.println(" "+i+"行"+j+" 列是一个马鞍点值 ="+a[i][j]);

}

}

}