夏秋的朝暮. 2022-11-09 22:55 采纳率: 90%
浏览 33
已结题

C语言,请问这个代码该怎么改?

判断矩阵中的局部极大值,请问怎么实现这个功能啊……我写的只能实现输出None那个功能……
代码如下(每个%后都有一个d的)
#include"stdio.h"
int main(void)
{
int row,col;
scanf("%d %)",&row,&col);
int matrix[row][col];
int i,j;
for(i = 0;i < row;i++){
for(j = 0;j < col;j++){
scanf("%d",&matrix[i][j]);
}
}
int p = 0;
for(i = 1;i < row -1;i++){
for(j = 1;j < col - 1;j++){
if((matrix[i][j] > matrix[i][j-1]) && (matrix[i][j] > matrix[i][j+1]) && (matrix[i][j] > matrix[i-1][j]) && (matrix[i][j] > matrix[i+1][j]))
printf("%d % %\n",matrix[i][j],i,j);
}
}
if(p == 0)
printf("None %d %",row,col);
return 0;
}

【描述】
对于M行N列的整数矩阵A,如果A的非边界元素A[i][j]大于相邻的上下左右4个元素,则元素A[i][j]是矩阵的局部极大值。找出矩阵A的全部局部极大值及其所在的位置。
【输入】
第一行中给出矩阵A的行数M和列数N(3≤M,N≤20);
下面M行,每行给出A在该行的N个元素的值。数字间以空格分隔。
【输出】
按照“元素值 行号 列号”的格式,分行输出一个局部极大值,其中行、列编号从1开始。要求按照行号递增输出;若同行有超过一个局部极大值,则该行按列号递增输出。若没有局部极大值,则输出“None 总行数 总列数”。
【输入示例】
3 5
1 1 1 1 1
9 3 9 9 1
1 5 3 5 1
【输出示例】
None 3 5

  • 写回答

1条回答 默认 最新

  • 浪客 2022-11-09 23:21
    关注
    
    稍作修改
    if ((matrix[i][j] > matrix[i][j - 1]) && (matrix[i][j] > matrix[i][j + 1]) && (matrix[i][j] > matrix[i - 1][j]) && (matrix[i][j] > matrix[i + 1][j]))
    {
        printf("%d %d %d\n", matrix[i][j], i+1, j+1);
        p = 1;
    }
    
    测试数据
    
    3 5
    1 1 1 1 1
    9 3 9 6 1
    1 9 3 5 1
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 11月10日
  • 已采纳回答 11月10日
  • 创建了问题 11月9日

悬赏问题

  • ¥15 快手联盟怎么快速的跑出建立模型
  • ¥15 关于腾讯云服务器中,PHP页面无法打开的问题
  • ¥60 如何把照片修复成原始拍摄图
  • ¥80 Exited too quickly (process log may have details)
  • ¥15 爬知乎登录之后内容加载不出来
  • ¥15 怎么用protues测量通频带
  • ¥15 zepelin使用sparkInterpreter 异常
  • ¥15 paho mqtt 接收不到消息
  • ¥15 函数r关于两个分量y,z方向上的图像,分开画r随y的图像,r随z的图像
  • ¥15 如何用Matlab求Pearcey函数的数值积分?