【算法与数据结构】二维数组中寻找鞍点

来源:互联网 发布:淘宝云客服在哪里 编辑:程序博客网 时间:2024/04/30 05:29

二维数组寻找鞍点算法思想:

1、对二维数组遍历,拿每一行的第一个元素作为比较的元素;
2、如果该元素大于这一行的所有元素,遍历这一元素所在列中的元素并比较;
3、如果该元素小于所有元素,那么就找到了一个鞍点。

C语言实现如下:

#include <stdio.h>#define m 3#define n 3int a[3][3]={{1,1,8},{3,1,7},{1,4,6}};int i,j;int temp1=0,temp2=0;int row,col;int k;int flag;void find(int a[m][n]){    for(i=0;i<m;i++){        for(j=0;j<n;j++){            if(a[i][0]<a[i][j]){//寻找行中最大值                temp1=a[i][j];//将最大值赋给中间变量temp1                row=i;//记录下行号                col=j;//记录下列号            }        }        for(k=0;k<m;k++){            if(a[k][col]<temp1){                break;            }else {                if(k==m-1){//结束判断                    printf("当前鞍点是:%d\n", a[row][col]);                    flag++;                }            }        }    }    if(flag==0){        printf("当前%d行没有鞍点\n",i+1 );    }else {        printf("有%d个鞍点\n", flag);    }}int main(){    int count=0;   for(int i=0;i<m;i++){    for(int j=0;j<n;j++){        printf("%d\t", a[i][j]);        count++;        if(count%3==0){            printf("\n");        }    }   }   find(a);}

运行结果:

1   1   8   3   1   7   1   4   6   当前鞍点是:6有1个鞍点
0 0
原创粉丝点击