Mineweep(扫雷)

简介: Mineweep(扫雷)

每周一题之2 Mineweep(扫雷)

Minesweeper (扫雷)

PC/UVa IDs: 110102/10189,

Popularity: A,

Success rate: high Level: 1

测试地址:https://vjudge.net/problem/UVA-10189

[问题描述]

Have you ever played Minesweeper? It’s a cute little game which comes within a certain Operating

System which name we can’t really remember. Well, the goal of the  game is to find where are all the mines within a M × N field. To help  you, the game shows a number in a square which tells you how many mines  there are adjacent to that square. For instance, supose the following 4 ×  4 field with 2 mines (which are represented by an ‘*’ character):

*…

.*…

If we would represent the same field placing the hint numbers described above, we would end up

with:

*100

2210

1*10

1110

As you may have already noticed, each square may have at most 8 adjacent squares.

[输入]

The input will consist of an arbitrary number of fields. The first line of each field contains two integers

n and m (0 < n, m ≤ 100) which stands for the number of lines and columns of the field respectively.

The next n lines contains exactly m characters and represent the field.

Each safe square is represented by an ‘.’ character (without the quotes) and each mine square

is represented by an ‘*’ character (also without the quotes). The first field line where n = m = 0

represents the end of input and should not be processed.

[输出]

对于每对整数 i 和 j,按原来的顺序输出 i 和 j,然后输出二者之间的整数中的最大循环节长度。这三个整数应该用单个空格隔开,且在同一行输出。对于读入的每一组数据,在输出中应位于单独的一行。

[样例输入]

4 4

*…

.*…

3 5

**…

.*…

0 0

[样例输出]

Field #1:

*100

2210

1*10

1110

Field #2:

**100

33200

1*100

*/

  package 蓝桥;
  import java.util.Scanner;
  public class 扫雷 {
    public static void main(String[] args) {
      Scanner scanner=new Scanner(System.in);
      int a,b,sum=1;
      while (true) {
        a=scanner.nextInt();
        b=scanner.nextInt();
        if (a==0||b==0) {
          System.out.println("*/");
          break;
        }
        System.out.println();
        System.out.println("Field #"+sum+":");
        sum++;
        char[][] lei=new char[a][b];
        int[][] lei_int=new int[a][b];
        for (int i = 0; i < a; i++) {
          for (int j = 0; j < b; j++) {
            lei_int[i][j]=0;
          }
        }
        for (int i = 0; i < a; i++) {
          String tampString= scanner.next();
          for (int j = 0; j < b; j++) {
            lei[i][j]=tampString.charAt(j);
            if (lei[i][j]=='*') {
              lei_int[i][j]=99;
              if (i>0&&lei_int[i-1][j]!=99) {
                lei_int[i-1][j]+=1;
              }
              if (i<a-1&&lei_int[i+1][j]!=99) {
                lei_int[i+1][j]+=1;
              }
              if (j>0&&lei_int[i][j-1]!=99) {
                lei_int[i][j-1]+=1;
              }
              if (j<b-1&&lei_int[i][j+1]!=99) {
                lei_int[i][j+1]+=1;
              }
              if (j>0&&i>0&&lei_int[i-1][j-1]!=99) {
                lei_int[i-1][j-1]+=1;
              }
              if (j<b-1&&i<a-1&&lei_int[i+1][j+1]!=99) {
                lei_int[i+1][j+1]+=1;
              }
              if (j>0&&i<a-1&&lei_int[i+1][j-1]!=99) {
                lei_int[i+1][j-1]+=1;
              }
              if (j<b-1&&i>0&&lei_int[i-1][j+1]!=99) {
                lei_int[i-1][j+1]+=1;
              }
            }
          }
        }
        for (int i = 0; i < a; i++) {
          for (int j = 0; j < b; j++) {
            if (lei_int[i][j]==99) {
              System.out.print("*");
            }
            else {
              System.out.print(lei_int[i][j]);
            }
          }
          System.out.println();
        }
      }
    }
  }

   


相关文章
|
存储 SQL Go
sqlserver存储过程
sqlserver存储过程
|
SQL Java 数据库
Spring Authorization Server 1.1 扩展实现 OAuth2 密码模式与 Spring Cloud 的整合实战(上)
Spring Authorization Server 1.1 扩展实现 OAuth2 密码模式与 Spring Cloud 的整合实战(上)
|
监控 负载均衡 Java
5 大 SpringCloud 核心组件详解,8 张图彻底弄懂
本文图文详解 Spring Cloud 的五大核心组件,帮助深入理解和掌握微服务架构。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
5 大 SpringCloud 核心组件详解,8 张图彻底弄懂
|
9月前
|
JavaScript
jquery无限循环内容滑块插件
jquery无限循环内容滑块插件
|
存储 人工智能 小程序
比赛须知【2024 年睿抗机器人开发者大赛CAIP-编程技能赛(国赛)】
该文章是关于2024年睿抗机器人开发者大赛CAIP-编程技能赛(国赛)的参赛通知,强调了比赛时间、阅读比赛须知的重要性,并列举了多项比赛期间禁止的行为以确保比赛的公平性。
 比赛须知【2024 年睿抗机器人开发者大赛CAIP-编程技能赛(国赛)】
|
人工智能 监控 安全
阿里云 Elastic Enterprise 正式上线!
阿里云正式发布Elastic Enterprise 版!欢迎前来体验!
330 1
|
安全 物联网 网络安全
智能家居安全:从风险分析到防护措施的全面指南
随着物联网技术的飞速发展,智能家居系统已逐渐走入千家万户。然而,智能化带来的便捷背后隐藏着不容忽视的安全风险。本文深入探讨了智能家居系统中存在的各类安全威胁,并提出了一套综合性的安全防护措施。文章不仅涵盖了技术层面的解决方案,还强调了用户在提升家居安全中的关键作用。通过案例分析,本文旨在为读者提供一份实用的智能家居安全指南,确保技术便利与个人隐私的双重保障。
|
安全 网络协议 网络安全
【网络连接】ping不通的常见原因+解决方案,如何在只能访问网关时诊断,并修复IP不通的问题
【网络连接】ping不通的常见原因+解决方案,如何在只能访问网关时诊断,并修复IP不通的问题
25374 0
|
监控 安全 Linux
撒旦快速入门实战2
撒旦快速入门实战2
|
编译器
LabVIEW使用数据引用减少内存
LabVIEW使用数据引用减少内存
270 2