蓝桥杯---第二周练习 扫雷问题

[问题描述]
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
*/

public class LanQiao02 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scan = new Scanner(System.in);
	
		
		int count=1;
		while(true){
			int  m= scan.nextInt();
			int  n= scan.nextInt();
			scan.nextLine();
			if(n==0&&m==0) break;
			char [][]sl=new char[n][m];
			for(int i=0;i<n;i++) {
				String s=scan.next();
				char[]temp=s.toCharArray();
				for(int j=0;j<m;j++) {
					sl[i][j]=temp[j];
					System.out.println("Fild#"+count+":");
					sl(sl,n,m);
					count++;
				}
			}
			
	
	}
	}
	private static void sl(char[][] sl, int n, int m) {
		// TODO Auto-generated method stub
		for(int i=0;i<n;i++) {
			for(int j=0;j<m;j++) {
				if(sl[i][j]=='*') { System.out.println("*");
				continue;
				}
				int count=0;
				// TODO Auto-generated method stub
				for(int k=i-1;k<i+1;k++) {
					for(int l=j-1;l<j+1;l++) {
						if(k>=0&&k<n&&l>=0&&l<m&&sl[k][l]=='*') count++;
						
					}}
			}
	}
	}

	
}

猜你喜欢

转载自blog.csdn.net/weixin_42565135/article/details/86603720
今日推荐