个人名片:
博主:酒徒ᝰ.
个人简介:沉醉在酒中,借着一股酒劲,去拼搏一个未来。
专栏:PTA习题及解析
介绍:记录了博主在pta学习练题
前言
1.简介
“PTA程序设计类实验辅助教学平台”是由浙江大学主导,杭州百腾教育科技有限公司管理运营,全国高校教师共同建设的程序设计类课程的辅助教学平台。目前,全国538所高校参与,3152位教师共同建设出66095道高质量题目,学生注册用户已达136万;共有14类固定题目集(涵盖C语言、JAVA语言、Python语言、数据结构、数据库系统和中国高校计算机大赛题库等方面)和55类专业课程题目集(涵盖计算机类、电子类、文学类、外语类及华为认证)。包含判断题、填空题、单选题、多选题、程序填空题、函数题、编程题、主观题、多文件编程题和SQL编程题10种题目类型。
2.优点
- 支持20万人同时在线
- 支持多种题型
- 支持多种判题模式
- 为教学质量提供全方位保障
- 即时的答疑系统
一、题目
玩过扫雷游的朋友都知道,该游戏的目标是找出一个nm矩阵内的所有的地雷,在本题中,你需要为每一个单元格统计出它周围地雷的个数,每个单元格最多有8个相邻单元格,如下图,44 的格子里,用“*”表示雷,用“^” 表示没有雷。
计算后的输出结果为:
*100
2210
1*10
1110
输入格式:
输入包含若干个矩阵,对于每一个矩阵,第一行包含两个数M和N,分别表示该矩阵的行数和列数(0<N,M<100),接下来N行包含M个字符,就是该矩阵,用“*”表示地雷,用“^”表示空白。当N=M=0时,表示结束,不用处理该行。
输出格式:
对于每一个矩阵,首先在单独一行打印出矩阵序号:Field #X: 其中X是矩阵的编号,从1开始编号,接下来N行中,读入的“^”用该位置周围的地雷数目所代替,地雷处,仍用“*”表示。输出相邻的两个矩阵之间,空一行。
输入样例:
在这里给出一组输入。例如:
输出样例:
在这里给出相应的输出。例如:
Field #1:
100
2210
110
1110Field #2:
324310
420
25641
236**1
23431
334531
235**1
133**31
代码长度限制 16 KB
时间限制 400 ms
内存限制 64 MB
二、代码
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int number = 0;
int M = 1;
int N = 1;
while (M != 0 && N != 0){
M = sc.nextInt();
N = sc.nextInt();
int[][] num = new int[M][N];
String str;
int sum = 0;
for (int i = 0; i < M; i++) {
str = sc.next();
for (int j = 0; j < N; j++) {
num[i][j] = str.charAt(j);
}
}
number++;
if (M != 0 && N != 0 && number == 1){
System.out.println("Field #" + number + ":");
}else if (M != 0 && N != 0 && number != 1){
System.out.println();
System.out.println();
System.out.println("Field #" + number + ":");
}
for (int i = 0; i < M; i++) {
for (int j = 0; j < N; j++) {
if (num[i][j] == '*'){
System.out.print("*");
}else {
for (int k = i-1; k <= i+1; k++) {
for (int l = j-1; l <= j+1; l++) {
if (k >= M || l >= N || k < 0 || l < 0){
}else if (num[k][l] == '*'){
sum++;
}
}
}
System.out.print(sum);
sum = 0;
}
}
if (i != M-1){
System.out.println();
}
}
}
System.out.println();
System.out.println();
}
}