一个矩阵的鞍点是指某元素在该行上最大,该列上最小,现在请你找出矩阵的鞍点,也可能没有鞍点,如果没有鞍点,输出NO。
输入格式
第一行一个正整数n,表示矩阵的长宽为n;
接下来有n行,每行n个正整数。
输出格式
如果没有鞍点则显示NO,有则输出每个鞍点的坐标和值,一个鞍点占一行。
数据范围
1≦n≦10;
请问用c++该怎么写。
int main()
{
bool flag; //声明一个布尔变量;
int a[100][100];
int n,m;
int i,j;
int k,max,maxj; //maxj为该行最大值的列标
cout<<"请输入一个矩阵大小:";
cin>>n>>m;
cout<<"请输入一个矩阵数据:";
for(i=0; i<n; i++)
{
for(j=0; j<m; j++)
{
cin>>a[i][j];
}
}
for(i=0; i<n; i++) //求出该行的最大值的列下标;
{
k=a[i][0];
max=0;
for(j=0; j<m; j++)
{
if(a[i][j]>k)
{
max=a[i][j];
maxj=j;
}
}
flag=true; //默认flag为真
for(k=0; k<n; k++) //判断该行是否是其所在列的最小值;
{
if(max>a[k][maxj])
{
flag=false; //如果不是最小,继续下一行(i=1)的内循环
}
}
if(flag) //如果是最小,则输出
{
cout<<"a["<<i<<"]["<<maxj<<"]="<<max;
cout<<endl;
break;
}
}
if(!flag)
{
cout<<"这个数不存在!";
}
return 0;
}