有谁知道下面的程序怎么编的啊???

来源:百度知道 编辑:UC知道 时间:2024/05/06 20:31:37
有谁知道下面的程序怎么编的啊???
从键盘输入一个M行N列的矩阵,找出该矩阵中的“鞍点”,即该位置上的元素在该行最大,在该列上最小。如没有“鞍点”,什么也不输出。(用 Turbo C2.0编程)

思路很简单啊,
先找每行中的最大元素,然后看其是否是该列最小的

#include <stdio.h>
#define M 3 //为了测试方便,这里把矩阵设置为3行3列
#define N 3 //你可以按要求自己更改

int main()
{
int nArrow[M][N];
for(int i=0; i<M; i++)
{
for(int j=0; j<N; j++)
{
printf("请输入坐标为[%d,%d]的数字:",i+1,j+1);
printf("\n");
scanf("%d",&nArrow[i][j]);
}
}

for(int m=0; m<M; m++)
{
int RMax=nArrow[m][0]; //RMax保存行最大值
int nLine=0; //保存行最大值所在的列
for(int n=0; n<N; n++) //找出行最大值
{
if(RMax<nArrow[m][n])
{
RMax=nArrow[m][n];
nLine=n;
}
}
for(int k=0; k<M; k++)//验证其是否是列最小值
{
if(RMax>nArrow[k][nLine])
{
break;
}
}
if(k==M) //判断是否是最小值(如果到最后都没找到比它大的,当然就是最小值了)
{
printf("坐标为[%d,%d]的数字:%d为鞍点\n",m+1,nLine,RMax);
}
}