BRRROCCOLI 2021-05-15 21:24 采纳率: 100%
浏览 45
已采纳

一道c语言题目 学生党 感谢!

有一个case死活过不了

帮帮孩子

 

 

题目内容:

二维数组中的鞍点,即该位置上的元素是所在行上的最大值,是所在列上的最小值。

二维数组也可能没有鞍点。

输入一个二维数组的行数n,列数m,二维数组的诸元素值;输出数组的鞍点,以及鞍点所在的行列号。

输入格式:

第一行为矩阵的行数和列数,从第二行开始,为矩阵本身(假设输入的矩阵只有0和1个鞍点)

输出格式:

数组的鞍点,以及鞍点所在的行列号 (下标从0开始)

输入样例1:

3 4
1 3 5 3
2 3 4 1
3 2 6 7[回车]

输出样例1:

Point:a[1][2]==4[回车]

 

输入样例2:

3 4
1 2 3 4
8 4 3 6
9 4 5 1[回车]

输出样例2:

No Point[回车]

#include <stdio.h>  

int main()  
{  
    int n,m,i,j,max,exchange,k,maxx,maxy,line,trigger=0,trigger2=0;
    int a[40][40];
    scanf("%d %d",&n,&m);
    for(i=0;i<=n-1;i++)
        for(j=0;j<=m-1;j++){
            scanf("%d",&a[i][j]);
        }
        
    for(i=0;i<=n-1;i++){
        max=a[i][0];
        maxx=i;
        maxy=0;
        for(j=1;j<=m-1;j++){
            
            if(a[i][j]>=max) {
                max=a[i][j];
                maxx=i;
                maxy=j;
            }
        }
        for(line=0;line<=m-1;line++){
            if(a[line][maxy]<a[maxx][maxy]){trigger=1;break;
                
            }
        }
        if(trigger==0){
            printf("Point:a[%d][%d]==%d\n",maxx,maxy,a[maxx][maxy]);
            trigger2=1;
        }
        if(trigger==1){trigger=0;
        }    
    }
    if(trigger2==0) printf("No Point\n");
    return 0;    
    
}  

 

  • 写回答

2条回答 默认 最新

  • qfl_sdu 2021-05-15 22:48
    关注

    代码修改如下:如有帮助,请采纳一下,谢谢。

    #include <stdio.h>  
    int main()  
    {  
    	int n,m,i,j,maxx;
    	int a[40][40];
    	scanf("%d %d",&n,&m);
    	for(i=0;i<=n-1;i++)
    	{
    		for(j=0;j<=m-1;j++)
    		{
    			scanf("%d",&a[i][j]);
    		}
    	}
    
    	bool b = false;
    	for (i = 0; i <n;i++)
    	{
    		//找i行的最大值
    		maxx = a[i][0];
    		int index = 0;
    		for(j = 0;j < m;j++)
    		{
    			if (a[i][j] > maxx)
    			{
    				maxx = a[i][j];
    				index = j;
    			}
    		}
    		//判断a[i][index]是否是该列的最小值
    		int t = 0;
    		for (; t < n;t++)
    		{
    			if (a[t][index] < maxx)
    			{
    				break;
    			}
    		}
    		if (t == n)
    		{
    			b = true;
    			printf("Point:a[%d][%d]==%d\n",i,index,a[i][index]);
    		}
    	}
    
    	if (!b)
    	{
    		printf("No point\n");
    	}
    
    
    	
    
    
    	getchar();
    	getchar();
    	return 0;    
    
    }  
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 C#读写EXCEL文件,不同编译
  • ¥15 如何提取csv文件中需要的列,将其整合为一篇完整文档,并进行jieba分词(语言-python)
  • ¥15 MapReduce结果输出到HBase,一直连接不上MySQL
  • ¥15 扩散模型sd.webui使用时报错“Nonetype”
  • ¥15 stm32流水灯+呼吸灯+外部中断按键
  • ¥15 将二维数组,按照假设的规定,如0/1/0 == "4",把对应列位置写成一个字符并打印输出该字符
  • ¥15 NX MCD仿真与博途通讯不了啥情况
  • ¥15 win11家庭中文版安装docker遇到Hyper-V启用失败解决办法整理
  • ¥15 gradio的web端页面格式不对的问题
  • ¥15 求大家看看Nonce如何配置