解题思路: 暴力枚举~
注意事项: !!!!Field #1: 这个输出真的要注意!!!复制的field与#之间有两个空格!!!而答案里面只有一个空格!!!就是因为这个在提交的时候格式错误了好几次
参考代码:
import java.util.Scanner;
public class P1524 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = 0, m = 0;
n = scanner.nextInt();
m = scanner.nextInt();
int num = 1;
while (n != 0 && m != 0){
String s1 = scanner.nextLine(); //用来吸收空串
String [][] AList = new String[n][m]; //n行m列
for (int i = 0; i < n; i++) {
char [] c0 = scanner.nextLine().toCharArray();
for (int j = 0; j < m; j++) {
AList[i][j] = String.valueOf(c0[j]);
}
}
String [][] result = solve(AList, n, m);
System.out.println("Field #" + num + ":");
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
System.out.print(result[i][j]);
}
System.out.println("");
}
System.out.println("");
num++;
n = scanner.nextInt();
m = scanner.nextInt();
}
}
static String[][] solve(String [][] AList, int n, int m){
String [][] boom = new String[n][m];
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
int amount = 0; //周遭炸弹数量
String s0 = AList[i][j]; //取出一个字符
if (s0.equals("*")){ //判断是否为炸弹,是则直接记录后进行下一个字符得到检测
boom[i][j] = "*";
continue;
}
//西北方向
if (i - 1 >= 0 && j - 1 >= 0){
if (AList[i - 1][j - 1].equals("*")){
amount++;
}
}
//正北方向
if (i - 1 >= 0){
if (AList[i - 1][j].equals("*")){
amount++;
}
}
//东北方向
if (i - 1 >= 0 && j + 1 < m){
if (AList[i - 1][j + 1].equals("*")){
amount++;
}
}
//正东方向
if (j + 1 < m){
if (AList[i][j + 1].equals("*")){
amount++;
}
}
//东南方向
if (i + 1 < n && j + 1 < m){
if (AList[i + 1][j + 1].equals("*")){
amount++;
}
}
//正南方向
if (i + 1 < n){
if (AList[i + 1][j].equals("*")){
amount++;
}
}
//西南方向
if (i + 1 < n && j - 1 >= 0){
if (AList[i + 1][j - 1].equals("*")){
amount++;
}
}
//正西方向
if (j - 1 >= 0){
if (AList[i][j - 1].equals("*")){
amount++;
}
}
boom[i][j] = String.valueOf(amount);
}
}
return boom;
}
}
0.0分
0 人评分
C语言程序设计教程(第三版)课后习题1.6 (C语言代码)浏览:524 |
C语言程序设计教程(第三版)课后习题10.2 (C语言代码)浏览:1483 |
IP判断 (C语言代码)浏览:592 |
C语言程序设计教程(第三版)课后习题7.3 (C语言代码)浏览:569 |
【计算直线的交点数】 (C语言代码)浏览:986 |
C语言程序设计教程(第三版)课后习题10.7 (C++代码)浏览:666 |
C语言程序设计教程(第三版)课后习题6.2 (C语言代码)浏览:663 |
Manchester-汽水瓶问题浏览:4235 |
Manchester-数字整除最原始易理解方法浏览:4635 |
Manchester-台球碰撞-(附带图解)浏览:3787 |