夏秋的朝暮. 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 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分