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