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

一道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;    
    
    }  
    点赞 打赏 评论
  • 快乐鹦鹉 2021-05-15 21:28

     maxx=i;放到循环外面去,改为maxx = 0;

    点赞 打赏 评论

相关推荐 更多相似问题