1. 程式人生 > >PAT-乙-1072 1072 開學寄語 (20 分)

PAT-乙-1072 1072 開學寄語 (20 分)

在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述

程式碼

#include <iostream>

using namespace std;

int main() {

	int N, M;
	scanf("%d %d", &N, &M);

	int a[10000] = {0};
	for(int i=0; i<M; i++) {
		int t;
		scanf("%d", &t);
		a[t] = 1;
	}

	int sum1 = 0;
	int sum2 = 0;
	for(int i=0; i<N; i++) {
		char ch[5];
		int num;
		scanf("%s %d", ch, &num);
		bool flag = false;
		for(int j=0; j<num; j++) {
			int tmp;
			scanf("%d", &tmp);
			if(!flag && a[tmp]==1) {
				flag = true;
				sum1++;
				sum2++;
				printf("%s: %04d", ch, tmp);
			} else if(a[tmp]==1) {
				sum2++;
				printf(" %04d", tmp);
			}
		}
		if(flag) {
			cout<<endl;
		}
	}
	printf("%d %d\n", sum1, sum2);

	return 0;
}

註解

1、學會用flag標誌處理問題。
2、用a[10000]陣列表示4位整數,每個陣列下標對應一個整數,這樣索引的速度快,方便查詢。
3、注意輸出格式。不要忘記前導0.

結果

在這裡插入圖片描述