/*给一个n*m大小的矩阵,寻找矩阵中所有比邻居(上下左右,对角也算,不考虑边界就是8个咯)都严格大的点。
返回一个n*m大小的矩阵,如果原矩阵中的点比邻居都严格大,则该位置为1,反之为0*/
示例;
put: out:
1 2 3 4 5 0 0 0 0 0
2 3 4 5 6 0 0 0 0 0
6 7 8 9 10 0 0 0 0 1
6 5 3 2 1 0 0 0 0 0
1 2 3 4 5 0 0 0 0 1
//方案一,直接输入矩阵的情况
//只在输入为方阵时适用, 输入行不等于列时(即m!=n)不能解决,求助大佬!!!
#include<stdio.h>
#define line 100
#define row 100
int main ()
{
int arr[100][100];
int arr1[100][100];
char ch;
int a=0;
int line1,row1;
// int line,row;//矩阵的行和列
// scanf("%d %d",&line,&row);
int i,k;
for( i=0;i<line;i++)
{
for ( k=0;k<row;k++)
{
if(scanf("%d",&arr[i][k])&&(ch=getchar())!='\n')
continue;
else
break;
}
if(k==i)
break;
}
line1=i;
row1=k;
for(int i=0;i<=line1;i++)
{
for (int k=0;k<=row1;k++)
{
if(arr[i][k]>arr[i][k-1]&&arr[i][k]>arr[i][k+1]&&
arr[i][k]>arr[i+1][k+1]&&arr[i][k]>arr[i-1][k-1]&&
arr[i][k]>arr[i+1][k]&&arr[i][k]>arr[i-1][k]&&
arr[i][k]>arr[i-1][k+1]&&arr[i][k]>arr[i+1][k-1])
arr1[i][k]=1;
else
arr1[i][k]=0;
}
}
for(int i=0;i<=line1;i++)
{
for (int k=0;k<=row1;k++)
{
printf("%d ",arr1[i][k]);
}
printf("\n");
}
return 0;
}
//方案二,给予矩阵行列的情况
/*#include<stdio.h>
int main ()
{
int arr[100][100];
int arr1[100][100];
int line,row;//矩阵的行和列
scanf("%d %d",&line,&row);
for(int i=0;i<line;i++)
{
for (int k=0;k<row;k++)
{
scanf("%d",&arr[i][k]);
}
}
for(int i=0;i<line;i++)
{
for (int k=0;k<row;k++)
{
if(arr[i][k]>arr[i][k-1]&&arr[i][k]>arr[i][k+1]&&
arr[i][k]>arr[i+1][k+1]&&arr[i][k]>arr[i-1][k-1]&&
arr[i][k]>arr[i+1][k]&&arr[i][k]>arr[i-1][k]&&
arr[i][k]>arr[i-1][k+1]&&arr[i][k]>arr[i+1][k-1])
arr1[i][k]=1;
else
arr1[i][k]=0;
}
}
for(int i=0;i<line;i++)
{
for (int k=0;k<row;k++)
{
printf("%d ",arr1[i][k]);
}
printf("\n");
}
return 0;
} */
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复