C语言寻找鞍点 代码运行时无法得到正确输出 怎样修改才能得到鞍点值呢

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
void main()
{
    int column, row;//分别声明列 行
    int i, j;
    int k = 0, l = 0;
    int rmax, cmin;//分别声明行最大 列最小
    int a[100][100];
    //初始化 行 和 列
    printf("input row size(number of columns):");
    scanf("%d", &row);
    printf("input column size(number of rows):");
    scanf("%d", &column);
    //输入 行 和 列 中的元素
    for (i = 0;i < row;i++)
    {
        printf("input the items of row%d:", i);
        for (j = 0;j < column;j++)
        {

            scanf("%d", &a[i][j]);
        }

    }
    //打印输入的数组元素
    printf("the array you input is:\n");
    for (i = 0; i < row; i++)
    {
        for (j = 0;j < column;j++)
            printf("%d ", a[i][j]);
        printf("\n");
    }


    //寻找该数组中的鞍点
    for (i = 0;i < row;i++)
    {
        rmax = 0;
        k = 0;
        for (j = 0; j < column;j++)
        {
            if (rmax < a[i][j])
            {
                rmax = a[i][j];
                k = j;
            }
        }


        cmin = 0;
        l = 0;
        for (i = 0;i < row;i++)
        {
            if (cmin > a[i][k])
            {
                cmin = a[i][k];
                l = i;
            }
        }
        if (rmax == cmin)
        {
            printf("the saddle point is found!its position is a[% d][% d], and a[% d][% d] is % d ", l, k, l, k, rmax);
        }
    }
}

鞍点列子,参考一下。

 


#include "stdio.h"
void main()
{
	
    /*
    	鞍点:
    		1.该位置上的元素在该行最大;
    		2.该位置上的元素在该列最小,也可能没有;
    		
    */
    int a[][4]={
    	{1, 2, 3, 4},
    	{5, 6, 7, 8},	
    	{9, 10,11,12},
    	{13,14,15,16}
    };
    int i,j,min,max,t=0,t2=0;
    //打印数组
    for(i=0;i<4;i++)
	{
		for(j=0;j<4;j++)
			printf("%d\t",a[i][j]);	
		printf("\n");	
	}
    
    for(i=0;i<4;i++) //行
    {
    	t=0;
    	max=a[i][0];//初始值
    	for(j=1;j<4;j++) //求当前行的最大值
    	{
    		if(max<a[i][j]){
    			max = a[i][j];	
    			t = j;//最大值所在的列
    		}
    	}
    	t2=i;//临时保存
    	
    	min=a[0][t]; //求当前列的最小值
    	//求第t列的最小值
    	for(j=0;j<4;j++) //j代表行;
    	{
    		if(min>a[j][t])
    		{
    			min=a[j][t];
    			t2=j;	
    		}
    	}
    	if(i==t2){//同一行,同一列
    		printf("%d行的第%d列的%d是鞍点",t2+1,t+1,a[t2][t]);	
    	}	
    	
    }
}

 

您的问题已经有小伙伴解答了,请点击【采纳】按钮,采纳帮您提供解决思路的答案,给回答的人一些鼓励哦~~

ps:开通问答VIP,享受5次/月 有问必答服务,了解详情↓↓↓

【电脑端】戳>>>  https://vip.csdn.net/askvip?utm_source=1146287632
【APP 】  戳>>>  https://mall.csdn.net/item/52471?utm_source=1146287632