寻找马鞍点c++

输入说明:输入数据由m+1组成,第一行只有两个整数m,n 分别是行数和列数

输出 马鞍点的行号和列号,从0开始计数,若不存在马鞍点,则输出一个"no"之后换行

输入示例 :
4 3
11 13 121
407 72 88
25 58 1
134 30 62

输出示例:
1 1 72

一开始卡在了循环,在列和行之间脑子短路了,这里面我先找出每一行的最小值row_min,记录下所在的行列数,之后在用一个循环找所在列的最大值col_max,这里面我有一个地方一开始一直忽略了,就是行最小和列最大在一开始要赋初值

		row_min = a[i][0]; 
		row_min_row = i;
		row_min_col = 0;
col_max = a[0][row_min_col]; 	
#include "iostream"
#include "algorithm"
using namespace std;

int main(){
	int m,n;

	cin>>m>>n;
		int a[m][n];
	for(int i=0;i<m;i++)
		for(int j=0;j<n;j++){
			cin>>a[i][j];
		}//输入矩阵 
		
	 
	int row_min,row_min_col,col_max,row_min_row,flag=0;
	int i,j,k,temp;
	for(i=0;i<m;i++){
		row_min = a[i][0]; 
		row_min_row = i;
		row_min_col = 0;
		for(j=0;j<n;j++){
			if(row_min > a[i][j]){
					row_min = a[i][j];  // i = 0 1 2 3    //找到行最小 
				 	row_min_col =  j;    //行最小的所在列 
				 	row_min_row = i;
			}
		}
	col_max = a[0][row_min_col]; 	
	for(k=1;k<m;k++){  
		if(col_max < a[k][row_min_col]){
			col_max = a[k][row_min_col];
		}
		
	}
	if(col_max == row_min){
		cout<<row_min_row<<" "<<row_min_col<<" "<<row_min<<endl;
		flag = 1;
	}

}  //大循环结束  
	if(!flag)
		cout<<"no"<<endl;  
	return 0;
	
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值