解题思路:直接解,最直接的就是判断它周围的8个是否存在‘*’号,也就是8种情况(最外围的没有8个,需要判断),每存在一个就记录一个,有多少个就记录多少个,只需判断 i 和 j 的取值范围。例如我的是数组,

那么i-1>=0 ,i+1<=a-1,j-1>=0,j+1<=b-1,保证在数组下表范围内。


注意事项:

参考代码:

   


数组


i-1,     j-1i-1,     ji-1,     j+1

i,        j-1i,        ji,        j+1

i+1,    j-1i+1,    ji+1,    j+1






#include<iostream>

#include<algorithm>

#include<stdio.h>

#include<string.h>

#include<math.h>

using namespace std;

int main()

{

        char s[1000][1000];

        int a,b,n,i,j,k=1;

        while(1)

        {

            cin>>a>>b;

            if(a==0 && b==0) break;

            int d=0,w=0;

            for(i=0;i<a;i++)

            for(j=0;j<b;j++)

            cin>>s[i][j];

            cout<<"Field #"<<k<<":"<<endl;

            k++;

           for(i=0;i<a;i++)

            {

               for(j=0;j<b;j++)

                      {  

                         d=0;

                         int flag=1;

                         if(s[i][j]=='*') {cout<<"*";continue;}//continue直接下一个循环 不会执行后面的if

                         if(i-1>=0 && j-1>=0 && s[i-1][j-1]=='*') {d++;flag=0;}

                         if(i-1>=0 && s[i-1][j]=='*')             {d++;flag=0;}

                         if(i-1>=0 && j+1<=b-1 && s[i-1][j+1]=='*') {d++;flag=0;}

                         if(j-1>=0 && s[i][j-1]=='*')              {d++;flag=0;}

                         if(j+1<=b-1 && s[i][j+1]=='*')            {d++;flag=0;}

                         if(i+1<=a-1 && j-1>=0 && s[i+1][j-1]=='*') {d++;flag=0;} 

                         if(i+1<=a-1 && s[i+1][j]=='*')             {d++;flag=0;}

                         if(i+1<=a-1 && j+1<=b-1 && s[i+1][j+1]=='*'){d++;flag=0;}

                         if(flag==1)

                                 cout<<0;

                         else 

                                 cout<<d;

                      }

                          cout<<endl;

         }

            cout<<endl;

     }

     return 0;

}


点赞(2)
 

0.0分

0 人评分

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

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

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

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

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

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

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

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

评论列表 共有 0 条评论

暂无评论