首页 > 代码库 > 寻找二维数组的“鞍点”

寻找二维数组的“鞍点”

鞍点:该位置上的元素在该行上最大、在该列上最小。也可能没有鞍点。

 技术分享   技术分享

 1 #include <stdio.h> 2 #include <stdlib.h> 3 #define N 4 4 #define M 5 5 int main() 6 { 7     int i,j,k,maxj,max,a[N][M],flag; 8     printf("input matrix:\n"); 9     for(i=0;i<N;i++){10         for(j=0;j<M;j++){11             scanf("%d",&a[i][j]);12         }13     }14     for(i=0;i<N;i++){15         for(j=0;j<M;j++){16             printf("%5d",a[i][j]);17         }18         printf("\n");19     }20     for(i=0;i<N;i++){21         max=a[i][0];//开始时假设a[i][0]最大22         maxj=0;//将最大数的列号存在maxj中23         for(j=0;j<M;j++){//找出行最大值24             if(a[i][j]>max){25                 max=a[i][j];26                 maxj=j;//将最大数的列号存在maxj中27             }28         }29         flag=1;//假设为鞍点30         for(k=0;k<N;k++){31             if(max > a[k][maxj]){//将该行最大数与同列元素相比32                 flag=0;//如果该数不是同列最小,表示不是鞍点,令flag=0;33                 continue;//跳出k的循环34             }35         }36         if(flag){//flag为1表示是鞍点37             printf("a[%d][%d]=%d\n",i,maxj,max);38             break;//跳出i的循环39         }40     }41     if(!flag)42         printf("not exist\n");43     system("pause");44     return 0;45 }

 

寻找二维数组的“鞍点”