解题思路:奥利给

注意事项:

参考代码:import java.util.Scanner;

public class test {
   public static void main(String[] args) {
     Scanner sc=new Scanner(System.in);
       int  n1 = sc.nextInt();//行数
       int  n2 = sc.nextInt();//列数
       char [][]a=new char[n1][n2];//用来记录输入时的雷区
       int count=0;//记录某位置周围雷的数量
       int hang,lie;//记录这个位置是否存在于雷区中。
       //开始遍历去将数据输入到a数组中
       for (int i = 0; i <n1; i++) {
           char[] chars = sc.next().toCharArray();
           for (int j = 0; j <n2; j++) {
               a[i][j]=chars[j];
           }
       }
       //开始遍历a数组
       for (int i = 0; i <n1; i++) {
           for (int j = 0; j <n2; j++) {
               //如果遍历到的这个位置是?,则去看其周围有几个雷
               if (a[i][j]=='?'){
                   for (int k = -1; k <=1 ; k++) {
                       for (int l = -1; l <=1 ; l++) {
                           hang=i+k;
                           lie=j+l;

                            //判断位置是否正确合理,合理就加雷的数量。
                           if (hang>=0&&hang<n1&&lie>=0&&lie<n2&&a[hang][lie]=='*'){
                               count++;
                           }
                       }
                   }
                   a[i][j]=(char)(count+48);//ASCII值比数字大48
                   count=0;
               }
           }
       }
       //遍历完后输出
       for (char[] chars : a) {
           for (char aChar : chars) {
               System.out.print(aChar);
           }
           System.out.println();
       }
   }
}

点赞(0)
 

0.0分

0 人评分

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

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

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

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

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

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

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

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

评论列表 共有 0 条评论

暂无评论