c语言 鞍点问题

若矩阵Amxn中的某元素Ai,j是第i 行中的最小值,同时又是第j 列中的最大值,则
称此元素为该矩阵的一个鞍点。假设以二维数组存放矩阵,试编写一个函数,确定鞍点在
数组中的位置(若鞍点存在时)。
最新回答
清旖

2024-10-14 08:01:11

#include <stdio.h>

#ifndef NULL
#define NULL ((void *)0)
#endif

int *FindSaddle(int nRow, int nCol, int *pMatrix);
int main(int argc, char *argv[])
{
int *pRes = NULL;
// 矩阵定义代码段, 如 
int A[3][3] = {{1,2,3},{4,5,6},{7,8,9},};

pRes = FindSaddle(/*nRow*/3, /*nCol*/3, /*pMatrix*/A[0]);

if (pRes != NULL)
{
printf("%d",*pRes);
}
else
{
printf("未找到\n");
}

return 0;
}

int *FindSaddle(int nRow, int nCol, int *pMatrix)
{
int i, nMin;
int j, nMax;

for (i=0; i<nRow; i++)
{
for (nMin=0, j=1; j<nCol; j++)
{
if (pMatrix[i*nCol + j] < pMatrix[i*nCol + nMin])
nMin = j;
}

for (nMax=0, j=1; j<nRow; j++)
{
if (pMatrix[j*nRow + nMin] > pMatrix[nMax*nRow + nMin])
nMax = j;
}

if (i == nMax)
return &pMatrix[i*nRow + nMin];
//return pMatrixi*nRow + nMin;
}

return NULL;
}

望采纳!!!!