宠妃不好惹妈妈网:求救!!!!!!

来源:百度文库 编辑:高校问答 时间:2024/04/29 07:20:36
求救!!!!!
若m*x矩阵中的元素Aij既是第i行的最小值,有是第j列的最大值,则Aij是矩阵的鞍点。试写出求矩阵鞍点的算法。
要C++的!~-~

源程序如下:

#include <iostream.h>
#include <iomanip.h>

#define ARRAY_ROW_MAX 20
#define ARRAY_COL_MAX 20

int SearchRowMin(int m[ARRAY_ROW_MAX][ARRAY_COL_MAX], int col, int searchrow);
int SearchColMax(int m[ARRAY_ROW_MAX][ARRAY_COL_MAX], int row, int searchcol);

void main()
{
int matrix[ARRAY_ROW_MAX][ARRAY_COL_MAX];
int rownum,colnum;
int i,j;

cout<<"Please input the matrix size:";
cin>>rownum>>colnum;
if (rownum > ARRAY_ROW_MAX || colnum > ARRAY_COL_MAX)
return;
cout<<"Please input matrix data:";
for(i=0; i<rownum; i++)
for(j=0; j<colnum; j++)
cin>>matrix[i][j];

for (i=0; i<rownum; i++)
{
for (j=0;j<colnum; j++)
cout<<setw(5)<<matrix[i][j];
cout<<endl;
}
int flag = 0;
for(i=0; i<rownum; i++)
{
int row_min_index = SearchRowMin(matrix, colnum,i);
int col_max_index = SearchColMax(matrix, rownum, row_min_index);
if (col_max_index == i)
{
cout<<"("<<i<<","<<row_min_index<<")"<<endl;
flag = 1;
}
}
if (flag == 0)
cout<<"There is nothing!"<<endl;
}

int SearchRowMin(int m[ARRAY_ROW_MAX][ARRAY_COL_MAX], int col, int searchrow)
{
int min = m[searchrow][0];
int index = 0;
for (int j=1; j<col; j++)
if (min > m[searchrow][j])
{
min = m[searchrow][j];
index = j;
}
return index;
}

int SearchColMax(int m[ARRAY_ROW_MAX][ARRAY_COL_MAX], int row, int searchcol)
{
int max = m[0][searchcol];
int index = 0;
for (int i=1; i<row; i++)
if (max < m[i][searchcol])
{
max = m[i][searchcol];
index = i;
}
return index;
}