帮忙用数据结构做下此程序,假设以二维数组存储矩阵,试编写算法求出矩阵中的所有马鞍点.若矩阵Am*n中的某个元素aij是第i行中的最小值,同时又是第j列中的最大值,则称次元素为该矩阵中的一个马鞍点.(m,n,i,j都是下标)
问题描述:
帮忙用数据结构做下此程序,假设以二维数组存储矩阵,试编写算法求出矩阵中的所有马鞍点.
若矩阵Am*n中的某个元素aij是第i行中的最小值,同时又是第j列中的最大值,则称次元素为该矩阵中的一个马鞍点.(m,n,i,j都是下标)
答
public class P1{
\x09private int[][] a=null;
\x09private int rownum=0,colnum=0;
\x09//存储每行中最小的那个数的行和列,如"1,2"---第一行,第二列
\x09private int[] rows=null;
\x09//存储每列中最大的那个数的行和列,如"1,2"---第一行,第二列
\x09private int[] cols=null;
\x09private int num=0;
\x09P1(int[][] a,int row,int col){
\x09\x09this.a = a;
\x09\x09this.rownum=row;
\x09\x09this.colnum=col;
\x09\x09rows = new int[row];
\x09\x09cols = new int[col];
\x09}
\x09
\x09public void setMinRow(){
\x09\x09int min;
\x09\x09int minIndex;
\x09\x09for(int r=0;r