也是cpe的題目。
不過我寫的也是讀檔版。
解題思路:
其實就照著題目的意思去寫,每次讀數字都確認每行每列每斜排有沒有一條線。
解題思路:
其實就照著題目的意思去寫,每次讀數字都確認每行每列每斜排有沒有一條線。
程式碼:
#include <stdio.h>
#include "FileHandler.h"
int main()
{
int bingo[5][5] = { 0 }, input[75], i_now = 0, row[5] = { 0 }, column[5] = { 0 }, tilt[2] = {1,1},check=0;
row[2] = 1, column[2] = 1;
char *str = readAllTextFromFile("./bingo.txt");
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 5; j++)
{
if (i == 2 && j == 2) continue;
int n = 0;
while (str[i_now] != ' '&&str[i_now] != '\n')
{
n = str[i_now] - '0' + n * 10;
i_now++;
}
i_now++;
bingo[i][j] = n;
}
}
for (int i = 0; i < 75; i++)
{
int n = 0;
while (str[i_now] != ' '&&str[i_now] != '\n'&&str[i_now]!=NULL)
{
n = str[i_now] - '0' + n * 10;
i_now++;
}
i_now++;
input[i] = n;
}
for (int i = 0; i < 75; i++)
{
for (int j = 0; j < 5; j++)
{
for (int k = 0; k < 5; k++)
{
if (input[i] == bingo[j][k])
{
row[j]++;
column[k]++;
if (j == k)
tilt[0]++;
else if (j + k == 4)
tilt[1]++;
}
}
}
if (tilt[0] == 5 || tilt[1] == 5)
{
printf("BINGO after %d numbers announced\n", i + 1);
check = 1;
break;
}
else
{
for (int j = 0; j < 5; j++)
{
if (row[j] == 5 || column[j] == 5)
{
printf("BINGO after %d numbers announced\n", i + 1);
check = 1;
break;
}
}
}
if (check == 1)
break;
}
system("pause");
return 0;
}
沒有留言:
張貼留言