其他分享
首页 > 其他分享> > 问题 AV: 找鞍点

问题 AV: 找鞍点

作者:互联网

时间限制: 1 Sec  内存限制: 128 MB
提交 状态

题目描述

在微分方程中,沿着某一方向是稳定的,另一条方向是不稳定的奇点,叫做鞍点。在泛函中,既不是极大值点也不是极小值点的临界点,叫做鞍点。在矩阵中,一个数在所在行中是最大值,在所在列中是最小值,则被称为鞍点。在物理上要广泛一些,指在一个方向是极大值,另一个方向是极小值的点。编写一个程序,找出n×m的矩阵a的鞍点,若存在必唯一,不存在则输出“Not Found”。

输入

有多行。第1行是两个整数n(n≤10)和m(m≤10),表示矩阵有n行m列。接下来n行,每行包含m个整数,表示矩阵值。

输出

 仅一行。如果鞍点存在,则按指定格式输出鞍点;否则,输出“Not Found”。

样例输入 Copy

3 4
1 2 13 4
7 8 10 6
3 5 9 7

样例输出 Copy

a[2][2]=9

 

#include<stdio.h>
int main ()
{
    int m,n,a[10][10],b,h,l,i,j,k=0,c,d,max,min;
    scanf("%d %d",&m,&n);
    for(i=0;i<m;i++){
        for(j=0;j<n;j++)
            scanf("%d",&a[i][j]);
    }
    
    for(b=0;b<m;b++){                       //从0行考虑 ,找这行的最大值  
        int e=0;                            //每次循环赋初值 
        max=a[b][0];
        h=b;                                //记录行 
        l=0;
        for(i=0;i<n;i++){
            if(max<a[b][i]){
                max=a[b][i];
            l=i;                            //记录列 
            }
        }
         
        min=a[h][l];                        //在l列该值最小 ,比较判断 
        for(j=0;j<m;j++){
            if(min>a[j][l]){
                e++;
            }
        }
        
            if(e==0){
                printf("a[%d][%d]=%d",h,l,min);
                k++;
            }
    }
    
    if(k==0)                                //鞍点的个数 
    printf("Not Found");
 
 } 

标签:10,输出,int,矩阵,问题,AV,Found,鞍点
来源: https://blog.csdn.net/qing9611/article/details/121410562