洛谷入门B2102 计算鞍点

在看到这道题的时候我想到的就是同时找到一个某一行的最大值以及这个最大值在对应的列中是否为这一列的最小值,然后我就一直在思考如何解决这个问题,但是我没有想到真正解决这个问题的思路,之后在我询问小爱同学后知道了这道题的思路,小爱同学给了一串代码,然后我总结了以下这个思路并且重新根据这个思路写了一段代码。

这道题的思路是:1.遍历每一行求该行的最大值;

                           2.固定该最大值所在的列,然后依次遍历行,求该列中最大值所处的行;

                           3.将该行和1中的行进行比较,若相同则输出该数所在的行,列,以及对应的值;

                            4.最后判断是否存在这样的数;

该思路的代码为:

#include<stdio.h>
int main(){
    int a[5][5];
    int i,j,k,rowmax,colmin,flag=0;
    for(i=0;i<5;i++){
    	for(j=0;j<5;j++){
    		scanf("%d",&a[i][j]);
		}
	}
    for(i=0;i<5;i++){
    	rowmax=0;
    	for(j=0;j<5;j++){
    		if(a[i][rowmax]<a[i][j])
    			rowmax=j;	
		}
		colmin=i;
		for(k=0;k<5;k++){
			if(a[k][rowmax]<a[colmin][rowmax])
				colmin=k;
		}
		if(colmin==i){
			printf("%d %d %d",i+1,rowmax+1,a[i][rowmax]);
            flag=1;
			break;
		}
	}
    if(flag==0) printf("not found\n");
	return 0;
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值