Press ESC to close

PTA猜帽子游戏【C语言】

题目描述

宝宝们在一起玩一个猜帽子游戏。每人头上被扣了一顶帽子,有的是黑色的,有的是黄色的。每个人可以看到别人头上的帽子,但是看不到自己的。游戏开始后,每个人可以猜自己头上的帽子是什么颜色,或者可以弃权不猜。如果没有一个人猜错、并且至少有一个人猜对了,那么所有的宝宝共同获得一个大奖。如果所有人都不猜,或者只要有一个人猜错了,所有宝宝就都没有奖。 下面顺序给出一排帽子的颜色,假设每一群宝宝来玩的时候,都是按照这个顺序发帽子的。然后给出每一群宝宝们猜的结果,请你判断他们能不能得大奖。

1. 输入格式

输入首先在一行中给出一个正整数 N(2

2. 输出格式

对于每一群玩游戏的宝宝,如果他们能获得大奖,就在一行中输出 Da Jiang!!!,否则输出 Ai Ya。

3. 输入样例

5 1 1 2 1 2 3 0 1 2 0 0 0 0 0 0 0 1 2 2 0 2

4. 输出样例

Da Jiang!!! Ai Ya Ai Ya

5.代码

#include

#define MAX_N 100

#define MAX_K 10

int main() {

int N;

int hats[MAX_N];

int K;

int guesses[MAX_K][MAX_N];

// 读取帽子的个数

scanf("%d", &N);

// 读取每顶帽子的颜色

for (int i = 0; i < N; i++) {

scanf("%d", &hats[i]);

}

// 读取猜测的组数

scanf("%d", &K);

// 读取每组宝宝的猜测结果

for (int i = 0; i < K; i++) {

for (int j = 0; j < N; j++) {

scanf("%d", &guesses[i][j]);

}

}

// 对每组猜测结果进行判断

for (int i = 0; i < K; i++) {

int correct = 0; // 猜对的人数

int wrong = 0; // 猜错的人数

int all_skip = 1; // 标记是否所有人都弃权,初始设为 1(是)

// 遍历该组每个宝宝的猜测

for (int j = 0; j < N; j++) {

if (guesses[i][j] != 0) {

all_skip = 0; // 有人猜测,不是所有人都弃权

if (guesses[i][j] == hats[j]) {

correct++; // 猜对,猜对人数加 1

} else {

wrong++; // 猜错,猜错人数加 1

}

}

}

// 根据判断规则输出结果

if (wrong == 0 && correct > 0) {

printf("Da Jiang!!!\n");

} else {

printf("Ai Ya\n");

}

}

return 0;

}