矩阵鞍点,i维度最高,j维度最低,C语言实现。

/*输入样例:
4
1 7 4 1
4 8 3 6
1 6 1 2
0 7 8 9
输出样例:2 1*/ 
#include <stdio.h>
#include <math.h>
 
int main(int argc, const char * argv[]){
    // insert code here...
    // TODO Auto-generated method stub
    int max=0,maxn[2]={-1,-1};
    int n,c=1;
    int a[100][100]={0};
    scanf("%d",&n);
    int i; 
    int j;
    //输入矩阵 
    for(i=0;i<n;i++){
        for(j=0;j<n;j++)
        {
            scanf("%d",&a[i][j]);
        }
    }
 	//大for循环 
    for(i=0;i<n;i++){
        max=0;
        //判断行中的最大值 
        for( j=0;j<n;j++){
            if(max<a[i][j]){
                max=a[i][j];
                maxn[0]=i;
                maxn[1]=j;
            }
        }
        //判断第i行的max,不能大于j列的任意一个。 
        int g=1;
        for(j=0;j<n;j++){
			//第i行最大的数要小于第j列所有的数,要是
			//max大于其中一个那么g=0,就不会输出 。
			//小于全部,等于不大于任意一个。
            if (a[j][maxn[1]]<max&&i!=j){ 
                g=0;
                break;
            }  
        }
        
        if(g){
        printf("%d %d\n",maxn[0],maxn[1]);
        c=0;
        }
    
    } 
    
    if(c){
        printf("NO\n");
    }
return 0; 
} 
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 设计师:xingchengrtg 返回首页