poj 2302 Traditional BINGO
来源:互联网 发布:租用 网络 视频会议 编辑:程序博客网 时间:2024/05/18 02:39
//就是按下面的数一个一个处理,如果是已有的牌则标记上,如果有任意横排,竖排,或斜排的数都被标记了则游戏结束#include <iostream>using namespace std;int bingo[5][5];int num[75];int main(){ int tc, i, j, k, c; bool flag1, flag2, flag3, flag4; cin >> tc; while (tc--) { flag1 = flag2 = flag3 = flag4 = false; for (i = 0; i < 5; i++) for (j = 0; j < 5; j++) { if (i == 2 && j == 2) bingo[i][j] = -1; else cin >> bingo[i][j]; } for (i = 0; i < 75; i++) cin >> num[i]; for (i = 0; i < 75; i++) { for (j = 0; j < 5; j++) for (k = 0; k < 5; k++) { if (num[i] == bingo[j][k]) bingo[j][k] = -1; } //横列数字的判断 for (j = 0; j < 5; j++) { c = 0; if (flag1) break; for (k = 0; k < 5; k++) { if (bingo[j][k] == -1) c++; } if (c == 5) { flag1 = true; break; } } //竖列数字的判断 for (j = 0; j < 5; j++) { c = 0; if (flag2) break; for (k = 0; k < 5; k++) { if (bingo[k][j] == -1) c++; } if (c == 5) { flag2 = true; break; } } //对对角线的数字的判断 if (bingo[0][0] == -1 && bingo[1][1] == -1 && bingo[2][2] == -1 && bingo[3][3] == -1 && bingo[4][4] == -1) flag3 = true; if (bingo[0][4] == -1 && bingo[1][3] == -1 && bingo[2][2] == -1 && bingo[3][1] == -1 && bingo[4][0] == -1) flag4 = true; if (flag1 || flag2 || flag3 || flag4) { cout << "BINGO after " << i+1 << " numbers announced" << endl; break; } } } system("pause");}