(含详细注释)实验7-2-8 找鞍点 (20分)

在这里插入图片描述

#include<stdio.h>
#include<ctype.h>
#include<string.h>
#include<math.h>
#include<stdlib.h>
int main()
{	
	int n, arr[6][6], i, j, k, flag = 1, temp = 0, max;
    scanf("%d", &n);
    for ( i = 0; i < n; i++)
        for ( j = 0; j < n; j++)
            scanf("%d", &arr[i][j]);
    for ( i = 0; i < n; i++){
        temp = 0;                   //初始化该行的第一个数为该行最大值
        for ( j = 1; j < n; j++){
            if ( arr[i][j] >= arr[i][temp])         //注意中间判断条件 >= 不然2测试点过不去,以后找最大值也可直接写上 >= 
                temp = j;
        }
        for (k = 0; k < n; k++){                //固定列数变换行数
            if (arr[i][temp] > arr[k][temp])        //这一列有一个数比这个数小则这个数不是鞍点
                flag = 0;
        }
        if (flag){                      //是鞍点则直接打印
            printf("%d %d", i, temp);
            return 0;
        }
        flag = 1;
    }
	
    printf("NONE");     //上面循环完程序还没有终止说明没有鞍点
	return 0;
} 

我刚开始将每一行的第一个元素赋值给max,然后判断该行其他元素,找最大值并把最大值的下标赋给temp发现不行,就又直接一开始就把该行最大值的列下标赋值为0就能过测试点了。有懂的老哥还请能在评论区留言,看见必回。

猜你喜欢

转载自blog.csdn.net/Mrrr_Li/article/details/107905227