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;
}

在這裏插入圖片描述
但是隻是對一半
在這裏插入圖片描述

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