也是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; }
沒有留言:
張貼留言