PAT(B) 1072 开学寄语(Java)统计

题目链接:1072 开学寄语 (20 point(s))

题目描述

下图是上海某校的新学期开学寄语:天将降大任于斯人也,必先删其微博,卸其 QQ,封其电脑,夺其手机,收其 ipad,断其 wifi,使其百无聊赖,然后,净面、理发、整衣,然后思过、读书、锻炼、明智、开悟、精进。而后必成大器也!

寄语
本题要求你写个程序帮助这所学校的老师检查所有学生的物品,以助其成大器。

输入格式

输入第一行给出两个正整数 N(≤ 1000)和 M(≤ 6),分别是学生人数和需要被查缴的物品种类数。第二行给出 M 个需要被查缴的物品编号,其中编号为 4 位数字。随后 N 行,每行给出一位学生的姓名缩写(由 1-4 个大写英文字母组成)、个人物品数量 K(0 ≤ K ≤ 10)、以及 K 个物品的编号。

输出格式

顺次检查每个学生携带的物品,如果有需要被查缴的物品存在,则按以下格式输出该生的信息和其需要被查缴的物品的信息(注意行末不得有多余空格):

姓名缩写: 物品编号1 物品编号2 ……

最后一行输出存在问题的学生的总人数和被查缴物品的总数。

输入样例

4 2
2333 6666
CYLL 3 1234 2345 3456
U 4 9966 6666 8888 6666
GG 2 2333 7777
JJ 3 0012 6666 2333

输出样例

U: 6666 6666
GG: 2333
JJ: 6666 2333
3 5

Java代码

/**********************************************************************************
Submit Time			Status		Score	Problem	Compiler		Run Time	User
8/3/2019, 16:13:10	Accepted	20		1072	Java (openjdk)	109 ms		wowpH
**********************************************************************************/
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		String[] nm = br.readLine().split(" ");
		int n = Integer.parseInt(nm[0]);			// 学生人数
		int m = Integer.parseInt(nm[1]);			// 需要查缴的物品数

		String[] seized = br.readLine().split(" ");	// 需要查缴的物品
		
		int stuNum = 0, itemNum = 0;	// 存在问题的学生的总人数和被查缴物品的总数

		for (int i = 0; i < n; ++i) {
			String[] student = br.readLine().split(" ");// 学生的信息
			int num = 0;							// 该生被查缴的物品数
			boolean[] flag =  new boolean[student.length];// 是否被查缴,下标从2开始
			for (int j = 2; j < student.length; ++j) {// 遍历学生的物品
				for (int k = 0; k < m; ++k) {		// 遍历需要查缴的物品
					if (student[j].contentEquals(seized[k])) {// 是需要查缴的物品
						++num;						// 该生被查缴的物品数加1
						flag[j] = true;				// 该物品被查缴
					}
				}
			}
			if (num > 0) {							// 该生有物品被查缴
				System.out.print(student[0] + ": ");// 输出该生姓名
				for (int j = 2; j < flag.length; ++j) {
					if (true == flag[j]) {			// 被查缴
						System.out.print(student[j]);// 输出物品编号
						for (j = j + 1; j < flag.length; ++j) {
							if (true == flag[j]) {	// 被查缴
								System.out.print(" " + student[j]);// 空格和物品编号
							}
						}
						System.out.println();		// 换行
						break;						// 退出
					}
				}
				++stuNum;							// 存在问题的学生人数加1
				itemNum += num;						// 被查缴的物品数增加
			}
		}
		System.out.println(stuNum + " " + itemNum);// 输出存在问题学生人数和查缴物品数
	}
}

提交结果

提交结果

原文地址:https://www.cnblogs.com/wowpH/p/11687436.html