即使AC,但此算法仍有不足之处,不能正确处理行最小、列最大+相等的矩阵情况。
如2 2
2 3
应为A[1][1]、A[2][1]
1 #include <iostream>
2 #define MAX_SIZE 100+1
3 using namespace std; 4 int array[MAX_SIZE][MAX_SIZE]; 5 void creatMatrix() 6 { 7 int m,n,iMax,jMax,count=0;//当前列中最大元素的行下标、列下标 8 scanf("%d%d",&m,&n); 9 int minRow[m],maxCol[n]; 10 for (int i = 1; i <= m; ++i) 11 { 12 scanf("%d",&array[i][1]); 13 minRow[i]=array[i][1]; 14 for (int j = 2; j <= n; ++j) 15 { 16 scanf("%d",&array[i][j]); 17 if(array[i][j]<minRow[i]) minRow[i]=array[i][j]; 18 } 19 } 20 for (int j = 1; j <= n; ++j)//遍历每一列 21 { 22 maxCol[j]=array[1][j]; iMax=1,jMax=j; 23 for (int i = 1; i <= m; ++i) 24 if(maxCol[j]<array[i][j]) 25 { 26 maxCol[i]=array[i][j]; 27 iMax=i; jMax=j; 28 } 29 if(array[iMax][jMax]==minRow[iMax]) 30 { 31 count==0 ? printf("A[%d][%d]",iMax,jMax ):printf(" A[%d][%d]",iMax,jMax ); 32 count++; 33 } 34 } 35 if(count==0) printf("NO."); 36 printf("\n"); 37 } 38 int main(int argc, char const *argv[]) 39 { 40 #ifndef _OJ_ //ONLINE_JUDGE 41 freopen("input.txt", "r", stdin); 42 #endif 43 int num; 44 scanf("%d",&num); 45 while(num--) 46 { 47 creatMatrix(); 48 if(num>0) printf("\n"); 49 } 50 return 0; 51 }