/*给一个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分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论