[ZJ] a361. A. 賓果遊戲
內容 :
在整理櫃子的時候,創創和守守發現了一疊賓果卡 (5 × 5 的方格紙上不按順序地印著 01 到 25 的數字),所以他們還沒整理完櫃子就開始玩起賓果遊戲來了。
創創和守守玩賓果遊戲的方式可能和我們有點不一樣:他們會一人先抽一張賓果卡,再使用從網路上找到的某個程式輸出一組數列 (這個數列包含 25 個數字,每個數字都在 01 到 25 之間,已經出現過的數字就不會再重複出現),然後按照數列裡數字出現的順序把賓果卡上的數字劃掉,直到其中一人的賓果卡上出現一條長度為 5 的直線、橫線或斜線為止,達成連線的人就是贏家;如果兩個人同時達成連線,則視為平手。
仔細想想,每次都要尋找數字、再把它劃掉、還有判斷是否有人勝利,這一連串的動作其實冗長又重複,所以創創和守守現在只想知道是誰贏了遊戲,而且他們還要回去整理櫃子呢!你可以在他們整理完櫃子之前幫忙寫一個程式,判斷誰抽到的賓果卡會贏得遊戲嗎?
輸入說明
:
第一行有一個整數 T (T ≤ 50) 代表接下來有幾組測試資料。
每組測試資料包含兩張賓果卡和一組數列:前 10 列每列有 5 個數字,第 1 列到第 5 列代表第 1 張賓果卡,第 6 到第 10 列代表第 2 張賓果卡;第 11 列是由 25 個數字所組成的數列,每個數字都在 01 到 25 之間,出現過的數字不會重複出現。
輸出說明
:
範例輸入 :
2 03 21 05 15 08 14 10 17 23 04 18 06 22 12 09 24 20 13 07 16 11 25 01 19 02 22 12 15 03 16 11 23 20 14 19 02 17 09 05 07 24 04 10 21 01 06 13 18 25 08 04 14 07 22 02 01 09 17 05 18 19 12 08 21 15 06 10 16 03 24 20 25 13 23 11 03 21 05 15 08 14 10 17 23 04 18 06 22 12 09 24 20 13 07 16 11 25 01 19 02 22 12 15 03 16 11 23 20 14 19 02 17 09 05 07 24 04 10 21 01 06 13 18 25 08 04 14 07 22 02 01 09 17 13 05 18 19 12 08 21 15 06 10 16 03 24 20 25 23 11
範例輸出 :
2 0
提示
:
出處
:
寫得不夠漂亮, 慚愧
#include <stdio.h>
int B[2][5][5];
void ban(int b[][5], int x) {
int i, j;
for(i = 0; i < 5; i++) {
for(j = 0; j < 5; j++) {
if(b[i][j] == x) {
b[i][j] = 0;
return;
}
}
}
}
int bingo(int b[][5]) {
int i, j;
for(i = 0; i < 5; i++) {
for(j = 0; j < 5; j++) {
if(b[i][j])
break;
}
if(j == 5) return 1;
for(j = 0; j < 5; j++) {
if(b[j][i])
break;
}
if(j == 5) return 1;
}
for(i = 0; i < 5; i++)
if(b[i][i])
break;
if(i == 5) return 1;
for(i = 0; i < 5; i++)
if(b[4-i][i])
break;
if(i == 5) return 1;
return 0;
}
int main() {
int t, i, j, x;
scanf("%d", &t);
while(t--) {
for(i = 0; i < 5; i++) {
for(j = 0; j < 5; j++) {
scanf("%d", &B[0][i][j]);
}
}
for(i = 0; i < 5; i++) {
for(j = 0; j < 5; j++) {
scanf("%d", &B[1][i][j]);
}
}
int flag = -1;
for(i = 0; i < 25; i++) {
scanf("%d", &x);
if(flag == -1) {
ban(B[0], x);
ban(B[1], x);
int a = bingo(B[0]), b = bingo(B[1]);
if(a && b) flag = 0;
if(a && !b) flag = 1;
if(!a && b) flag = 2;
}
}
printf("%d\n", flag);
}
return 0;
}