CHEN--JIN 2020-12-10 23:26 采纳率: 0%
浏览 8

请问一下这个错在哪里?(二维数组求鞍点)

#include<stdio.h>
main()
{ int a[20][20];
  int n,m,i,j,N;
  int max,min;
  scanf("%d %d",&n,&m);
  for(i=0;i<n;i++)
   for(j=0;j<m;j++)
   scanf("%d",&a[i][j]);
  for(i=0;i<n;i++)
   for(j=0;j<m;j++)
  {   max=a[i][0];
      min=a[0][j];
      for(j=0;j<m;j++)
      if(a[i][j]>max) max=a[i][j];
      if(a[i][j]<min) min=a[i][j];
  }
    int flag = 1;
    for(i=0; i<N; i++)
        for(j=0; j<N; j++)
        { if(max == min) {
                flag = 0;
                printf("%d", max);
                break;
            }
        }
    if(flag!=0)
        printf("No Saddle Point!");
 
    return 0;

 
  
  
}

  • 写回答

2条回答 默认 最新

  • muzibing1221 2020-12-11 19:36
    关注

    这两行执行应该放到大括号里面 不然会泄露

    for(i=0;i<n;i++)                 
        for(j=0;j<m;j++)             
        {                            
            max=a[i][0];             
            min=a[0][j];             
            for(j=0;j<m;j++)         
            {                        
                if(a[i][j]>max)      
                    max=a[i][j];     
                                     
                if(a[i][j]<min)      
                    min=a[i][j];     
            }                        
        }                            

    另外最后的逻辑

     

    如果flag==0 是没有鞍点

    if(flag==0)                                                    
    {                                                              
        printf("No Saddle Point!\n");                              
    }                                                              
    else                                                           
    {                                                              
        printf("Saddle Point: max %d min  %d \n", max, min);       
    }                                                              

     

     

     

    评论

报告相同问题?