1710819070


私信TA

用户名:1710819070

访问量:15410

签 名:

好好学习

等  级
排  名 323
经  验 5310
参赛次数 6
文章发表 21
年  龄 0
在职情况 学生
学  校 贺州学院
专  业 软件工程

  自我简介:

1+1+1+1+1+1=田

解题思路:直接解,最直接的就是判断它周围的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;

}


 

0.0分

0 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换

万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区