刷到一個鞍點的題目,感覺很簡單但是隻對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;
}
但是隻是對一半