//就是按下面的数一个一个处理,如果是已有的牌则标记上,如果有任意横排,竖排,或斜排的数都被标记了则游戏结束
#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");
}
poj 2302 Traditional BINGO
最新推荐文章于 2024-07-04 17:35:22 发布