C++大神进解题思路WhiteMouseYBZ程序 还有那个解释 解题思路如果矩阵A中存在这样的一个元素A[i][j]满足下列条件:A[i][j]是第i行中值最小的元素,且又是第j列中值最大的元素,则称之为该矩阵的一个马鞍点.编写一个程序计算出矩阵A的马鞍点的值.Input输入数据首先包含一个整数T,表示测试实例的个数,然后是T组测试数据.每组测试数据首先是2个正整数m,n (1
2019-05-30
C++大神进解题思路WhiteMouseYBZ
程序 还有那个解释 解题思路
如果矩阵A中存在这样的一个元素A[i][j]满足下列条件:A[i][j]是第i行中值最小的元素,且又是第j列中值最大的元素,则称之为该矩阵的一个马鞍点.编写一个程序计算出矩阵A的马鞍点的值.
Input
输入数据首先包含一个整数T,表示测试实例的个数,然后是T组测试数据.
每组测试数据首先是2个正整数m,n (1
优质解答
#include<iostream>
using namespace std ;
int main()
{
\x09int T;
\x09cin >> T ;
\x09while( T-- )
\x09{
\x09\x09int a[100][100];
\x09\x09int i,j,m,n,andian=0;
\x09\x09cin >> m >> n ;
\x09\x09for( i=0;i<m;i++ )
\x09\x09\x09for( j=0;j<n;j++ )
\x09\x09\x09\x09cin >> a[i][j] ;
\x09\x09
\x09\x09int min ;
\x09\x09for( i=0;i<m;i++ )
\x09\x09{
\x09\x09\x09min=0 ; //先设最小点位置是行第一个元素
\x09\x09\x09for( j=1;j<n;j++ ) //找到行最小点
\x09\x09\x09{
\x09\x09\x09\x09if ( a[i][j] < a[i][min] )
\x09\x09\x09\x09\x09min=j;
\x09\x09\x09}
\x09\x09\x09//检查min列的最大值是不是a[i][min]
\x09\x09\x09for( j=0;j<m;j++ )
\x09\x09\x09{
\x09\x09\x09\x09if ( a[j][min] > a[i][min] ) //非最小,终止循环,此时,j<m
\x09\x09\x09\x09\x09break;
\x09\x09\x09}
\x09\x09\x09if ( j==m ) //若不是该列最小,则j会小于m
\x09\x09\x09{
\x09\x09\x09\x09andian++; //找到鞍点,标志加1
\x09\x09\x09\x09printf("%d", a[i][min] );
\x09\x09\x09}
\x09\x09}
\x09\x09if ( andian == 0 ) //没有鞍点
\x09\x09\x09printf("Impossible");
\x09}
\x09return 0;
}
#include<iostream>
using namespace std ;
int main()
{
\x09int T;
\x09cin >> T ;
\x09while( T-- )
\x09{
\x09\x09int a[100][100];
\x09\x09int i,j,m,n,andian=0;
\x09\x09cin >> m >> n ;
\x09\x09for( i=0;i<m;i++ )
\x09\x09\x09for( j=0;j<n;j++ )
\x09\x09\x09\x09cin >> a[i][j] ;
\x09\x09
\x09\x09int min ;
\x09\x09for( i=0;i<m;i++ )
\x09\x09{
\x09\x09\x09min=0 ; //先设最小点位置是行第一个元素
\x09\x09\x09for( j=1;j<n;j++ ) //找到行最小点
\x09\x09\x09{
\x09\x09\x09\x09if ( a[i][j] < a[i][min] )
\x09\x09\x09\x09\x09min=j;
\x09\x09\x09}
\x09\x09\x09//检查min列的最大值是不是a[i][min]
\x09\x09\x09for( j=0;j<m;j++ )
\x09\x09\x09{
\x09\x09\x09\x09if ( a[j][min] > a[i][min] ) //非最小,终止循环,此时,j<m
\x09\x09\x09\x09\x09break;
\x09\x09\x09}
\x09\x09\x09if ( j==m ) //若不是该列最小,则j会小于m
\x09\x09\x09{
\x09\x09\x09\x09andian++; //找到鞍点,标志加1
\x09\x09\x09\x09printf("%d", a[i][min] );
\x09\x09\x09}
\x09\x09}
\x09\x09if ( andian == 0 ) //没有鞍点
\x09\x09\x09printf("Impossible");
\x09}
\x09return 0;
}