鞍点计算

本文介绍了一个简单的算法,用于在一个给定的二维数组中查找鞍点,即该元素在其所在行中最大,在其所在列中最小。文章提供了一个完整的Java实现示例,并详细解释了输入输出的格式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Problem Description

找出具有m行n列二维数组Array的“鞍点”,即该位置上的元素在该行上最大,在该列上最小,其中1<=m,n<=10。同一行和同一列没有相同的数。

Input

输入数据有多行,第一行有两个数m和n,下面有m行,每行有n个数。

Output

按下列格式输出鞍点:

Array[i][j]=x

其中,x代表鞍点,i和j为鞍点所在的数组行和列下标,我们规定数组下标从0开始。

一个二维数组并不一定存在鞍点,此时请输出None。
 
我们保证不会出现两个鞍点的情况,比如:
 
3 3
1 2 3
1 2 3
3 6 8

Sample Input
3 3
1 2 3
4 5 6
7 8 9
Sample Output
Array[0][2]=3

import java.util.*;

public class Main {
    public static void main(String[] args){
    	Scanner reader = new Scanner(System.in);
    	int m, n, i, j, max, flag=1, k, x;  
    	int[] a[] = new int[100][100];
    	m = reader.nextInt();
    	n = reader.nextInt();
    	for(i=0;i<m;i++)  
    	    for(j=0;j<n;j++)  
    	    	a[i][j] = reader.nextInt();
    	    for(i=0;i<m;i++){  
    	         max=a[i][0];  
    	         x=0;  
    	         for(j=0;j<n;j++) {  
    	             if(max<a[i][j]){  
    	                 max=a[i][j];  
    	                 x=j;  
    	             }  
    	         }  
    	         flag=1;  
    	         for(k=0;k<m;k++){ 
    	        	 
    	        	 if(max>a[k][x]){  
    	                 flag=0;  
    	                 continue;  
    	             }  
    	         }  
    	         if(flag==1) {  
    	             System.out.printf("Array[%d][%d]=%d\n",i,x,max);  
    	             break;  
    	         }  
    	    }  
    	    if(flag==0)  
    	        System.out.printf("None\n");  
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值