夏秋的朝暮. 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 latex投稿显示click download
  • ¥15 请问读取环境变量文件失败是什么原因?
  • ¥15 在若依框架下实现人脸识别
  • ¥15 网络科学导论,网络控制
  • ¥100 安卓tv程序连接SQLSERVER2008问题
  • ¥15 利用Sentinel-2和Landsat8做一个水库的长时序NDVI的对比,为什么Snetinel-2计算的结果最小值特别小,而Lansat8就很平均
  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?