zoukankan      html  css  js  c++  java
  • Java实现 蓝桥杯VIP 算法提高 扫雷

    算法提高 扫雷
    时间限制:1.0s 内存限制:256.0MB
    问题描述
      扫雷游戏你一定玩过吧!现在给你若干个n×m的地雷阵,请你计算出每个矩阵中每个单元格相邻单元格内地雷的个数,每个单元格最多有8个相邻的单元格。 0<n,m<=100
    输入格式
      输入包含若干个矩阵,对于每个矩阵,第一行包含两个整数n和m,分别表示这个矩阵的行数和列数。接下来n行每行包含m个字符。安全区域用‘.’表示,有地雷区域用’‘表示。当n=m=0时输入结束。
    输出格式
      对于第i个矩阵,首先在单独的一行里打印序号:“Field #i:”,接下来的n行中,读入的’.'应被该位置周围的地雷数所代替。输出的每两个矩阵必须用一个空行隔开。
    样例输入
    4 4


    .


    3 5
    **…

    .

    0 0
    样例输出
    Field #1:
    100
    2210
    1
    10
    1110

    Field #2:
    **100
    33200
    1*100
    (注意两个矩阵之间应该有一个空行,由于oj的格式化这里不能显示出来)
    数据规模和约定
      0<n,m<=100

    import java.util.ArrayList;
    import java.util.List;
    import java.util.Scanner;
    
    
    public class 扫雷 {
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		Scanner sc=new Scanner(System.in);
    		List<StringBuffer> sb=new ArrayList<StringBuffer>();
    		int count=1;
    		while(true){
    			int a=sc.nextInt();
    			int b=sc.nextInt();
    			if(a==b&&a==0)
    				break;
    			int[][] arr=new int[a][b];
    			sc.nextLine();
    			for(int i=0;i<a;i++){
    				String str=sc.nextLine();
    				for(int j=0;j<b;j++){
    					if(str.charAt(j)=='*')
    						arr[i][j]=9;
    					else if(str.charAt(j)=='.')
    						arr[i][j]=0;
    				}
    			}
    			for(int i=0;i<a;i++){
    				for(int j=0;j<b;j++){
    					if(arr[i][j]==9){
    						if(i-1>=0&&j-1>=0&&arr[i-1][j-1]!=9)
    							arr[i-1][j-1]++;
    						if(i-1>=0&&arr[i-1][j]!=9)
    							arr[i-1][j]++;
    						if(i-1>=0&&j+1<b&&arr[i-1][j+1]!=9)
    							arr[i-1][j+1]++;
    						if(j-1>=0&&arr[i][j-1]!=9)
    							arr[i][j-1]++;
    						if(j+1<b&&arr[i][j+1]!=9)
    							arr[i][j+1]++;
    						if(i+1<a&&j-1>=0&&arr[i+1][j-1]!=9)
    							arr[i+1][j-1]++;
    						if(i+1<a&&arr[i+1][j]!=9)
    							arr[i+1][j]++;
    						if(i+1<a&&j+1<b&&arr[i+1][j+1]!=9)
    							arr[i+1][j+1]++;
    					}
    				}
    			}
    			String s="Field #"+count+":";
    			sb.add(new StringBuffer(s));
    			for(int i=0;i<a;i++){
    				StringBuffer bu=new StringBuffer();
    				for(int j=0;j<b;j++){
    					if(arr[i][j]==9)
    						bu.append('*');
    					else
    						bu.append(arr[i][j]);	
    				}
    				sb.add(bu);
    			}
    			StringBuffer bb=new StringBuffer('
    ');
    			sb.add(bb);
    			count++;	
    		}
    		for(int i=0;i<sb.size();i++)
    			System.out.println(sb.get(i));
    	}
    
    
    }
    
    
  • 相关阅读:
    在cmd下执行py脚本报Traceback (most recent call last)报错解决
    git上传文件方法
    js获取元素方法和jquery语法操作元素方法
    获取config.ini文件配置的方法
    利用random随机函数实现抽奖方法
    selenium封装 运行脚本+生成测试报告+发送email
    基于KB的QA系统学习记录
    python学习记录
    manjaro + kde 使用过程中问题记录及解决方法
    linux学习记录
  • 原文地址:https://www.cnblogs.com/a1439775520/p/12948399.html
Copyright © 2011-2022 走看看