C++矩阵的鞍点

刷到一个鞍点的题目,感觉很简单但是只对50%
在这里插入图片描述
测试代码:

#include<iostream>
#include<stdlib.h>
using namespace std;
int main()
{
	system("color 3");
	int m,n,test=1;
	cin>>m>>n;
	int number[m][n];
	for(int i=0;i<m;++i)
	{
		for(int j=0;j<n;++j)
		{
			cin>>number[i][j];
		}
	}
	for(int i=0;i<m;++i)
	{
		int max=number[i][0];//第一个不断比较拿出最大值,行
		for(int j=1;j<n;++j)
		{
			if(max<number[i][j])
			{
				max=number[i][j];//换出最大值
			}
		} 
		for(int k=0;k<n;++k)//对应列 k记住 
		{
			if(number[i][k]==max)//匹配最大值 
			{
				int min=max;//比较该值是否为列的最小值 
				int flag=1;//标记 
				for(int loc=0;loc<m;++loc)//列比较 
				{
					int temp=number[loc][k];//列值 
					if(min>temp)//不是最小值 
					{
						flag=0;//标记为0
//						cout<<"NO"<<endl;
						break;
					} 
				}
				if(flag)
				{
					test=0;//存在标志 
					cout<<i+1<<" "<<k+1<<" "<<min<<endl;//存在鞍点并且打印 ,下标从0开始要加一 
				}
				else{
					break;//不是跳出这一行不存在 
				}
			}
		}
		//走完每一行中所有元素 
	}
	if(test)
	{
		cout<<"NO"<<endl;//不存在 
	}
	return 0;
}

在这里插入图片描述
但是只是对一半
在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章