夏秋的朝暮. 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日

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效