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

展开全部

/*

程序的功能:

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

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

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 

for (int j = 0; j 

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

}

}

/* 在矩阵中找鞍点 */

for (int i = 0; i 

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

max = arr[i][0];

maxHPos = i;

maxLPos = 0;

for (int j = 1; 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 

if (arr[k][maxLPos] 

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("没有鞍点");

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值