找到矩陣中最大值的位置,7-28 求矩陣的局部極大值 (15 分)

 2023-12-25 阅读 25 评论 0

摘要:7-28 求矩陣的局部極大值 (15 分) 給定M行N列的整數矩陣A,如果A的非邊界元素A[i][j]大于相鄰的上下左右4個元素,那么就稱元素A[i][j]是矩陣的局部極大值。本題要求給定矩陣的全部局部極大值及其所在的位置。 輸入格式: 輸入在第一行中給出矩陣A的行數M和

7-28 求矩陣的局部極大值 (15 分)

給定M行N列的整數矩陣A,如果A的非邊界元素A[i][j]大于相鄰的上下左右4個元素,那么就稱元素A[i][j]是矩陣的局部極大值。本題要求給定矩陣的全部局部極大值及其所在的位置。

輸入格式:
輸入在第一行中給出矩陣A的行數M和列數N(3≤M,N≤20);最后M行,每行給出A在該行的N個元素的值。數字間以空格分隔。

輸出格式:
每行按照“元素值 行號 列號”的格式輸出一個局部極大值,其中行、列編號從1開始。要求按照行號遞增輸出;若同行有超過1個局部極大值,則該行按列號遞增輸出。若沒有局部極大值,則輸出“None 總行數 總列數”。

找到矩陣中最大值的位置。輸入樣例1:
4 5
1 1 1 1 1
1 3 9 3 1
1 5 3 5 1
1 1 1 1 1
輸出樣例1:
9 2 3
5 3 2
5 3 4
輸入樣例2:
3 5
1 1 1 1 1
9 3 9 9 1
1 5 3 5 1
輸出樣例2:
None 3 5

#include<stdio.h>
struct Love{int hang;int lie;int max;
}Max[200];
int main()
{int m,n;int i,j;int a[300][300];//int max[20],k=0;int k=0;int flag=0;scanf("%d%d",&m,&n);for(i=0;i<m;i++){for(j=0;j<n;j++){scanf("%d",&a[i][j]);}}for(i=0;i<m;i++){if(i==0)continue;if(i==m-1)break;for(j=0;j<n;j++){if(j==0||j==n-1)continue;if(a[i][j]>a[i-1][j] && a[i][j]>a[i+1][j] && a[i][j]>a[i][j+1] && a[i][j]>a[i][j-1]){Max[k].max=a[i][j];Max[k].hang=i+1;Max[k].lie=j+1;k++;flag=1;}}}if(flag!=0){for(i=0;i<k;i++){printf("%d %d %d\n",Max[i].max,Max[i].hang,Max[i].lie);}}else{printf("None %d %d\n",m,n);}
}

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/2/194796.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息