fork download
  1. #include<stdio.h>
  2.  
  3. int main(){
  4. int n, m;
  5. scanf("%d%d", &n, &m);
  6.  
  7. int a[10][257][257]; // 從 [1][1] 開始用,保留 [0][0] 判斷是否贏
  8. int i, j, k;
  9. int winnerprinted = 0;
  10.  
  11. // 輸入每位玩家的賓果盤
  12. for(i = 0; i < n; i++)
  13. for(j = 1; j <= m; j++)
  14. for(k = 1; k <= m; k++)
  15. scanf("%d", &a[i][j][k]);
  16.  
  17. int number;
  18. while(scanf("%d", &number) != EOF && winnerprinted == 0){
  19. // 將該號碼標記為 0(表示被喊過)
  20. for(i = 0; i < n; i++)
  21. for(j = 1; j <= m; j++)
  22. for(k = 1; k <= m; k++)
  23. if(a[i][j][k] == number)
  24. a[i][j][k] = 0;
  25.  
  26. // 檢查每位玩家是否勝出
  27. for(i = 0; i < n; i++) {
  28. if(a[i][0][0] == 1) continue; // 已贏過的玩家跳過
  29.  
  30. int bingo = 0, test;
  31.  
  32. // 檢查橫列
  33. for(j = 1; j <= m && ! a[i][0][0] ; j++) {
  34. test = 0;
  35. for(k = 1; k <= m; k++)
  36. if(a[i][j][k] == 0) test++;
  37. if(test == m) a[i][0][0] = 1;
  38. }
  39.  
  40. // 檢查直行
  41. for(j = 1; j <= m && ! a[i][0][0] ; j++) {
  42. test = 0;
  43. for(k = 1; k <= m; k++)
  44. if(a[i][k][j] == 0) test++;
  45. if(test == m) a[i][0][0] = 1;
  46. }
  47.  
  48. // 檢查正對角線
  49. test = 0;
  50. for(j = 1; j <= m; j++)
  51. if(a[i][j][j] == 0) test++;
  52. if(test == m) a[i][0][0] = 1;
  53.  
  54. // 檢查反對角線
  55. test = 0;
  56. for(j = 1; j <= m; j++)
  57. if(a[i][j][m - j + 1] == 0) test++;
  58. if(test == m) a[i][0][0] = 1;
  59.  
  60. // 表示該玩家勝出
  61. }
  62.  
  63. // 判斷是否有人勝出,若有則印出並結束
  64. int hasWinner = 0;
  65. for(i = 0; i < n; i++)
  66. if(a[i][0][0] == 1)
  67. hasWinner = 1;
  68.  
  69. if(hasWinner) {
  70. printf("%d", number);
  71. for(i = 0; i < n; i++)
  72. if(a[i][0][0] == 1)
  73. printf(" %d", i);
  74. printf("\n");
  75. winnerprinted = 1;
  76. }
  77. }
  78.  
  79. return 0;
  80. }
  81.  
Success #stdin #stdout 0.01s 5304KB
stdin
4 8
61 17 29 6 49 55 28 45
7 32 26 27 16 53 50 44
20 46 31 5 57 39 62 15
54 40 42 25 11 10 23 4
2 12 38 9 36 59 37 48
14 63 1 58 33 52 51 35
19 24 18 22 8 47 30 56
43 3 41 60 34 64 21 13
16 53 21 51 56 46 4 41
44 64 30 10 45 37 8 57
50 2 52 26 38 49 27 9
1 62 11 25 6 23 55 36
31 58 42 34 48 7 47 39
17 54 61 22 18 63 12 29
59 33 60 19 20 43 40 14
24 28 5 3 32 15 35 13
41 4 30 50 56 17 16 25
29 20 6 23 64 54 14 22
31 43 7 24 32 1 9 60
63 37 19 40 57 59 55 5
10 38 48 61 51 39 12 53
58 36 2 35 49 62 15 21
47 28 46 34 33 44 45 8
11 3 18 26 13 27 42 52
9 43 51 57 12 58 13 46
44 18 33 23 35 25 26 4
8 29 24 54 6 10 17 34
48 60 39 2 5 62 21 7
63 55 40 37 14 15 49 64
53 59 28 45 47 42 11 3
22 41 16 56 1 52 20 32
38 31 19 50 27 61 36 30
47 56 32 59 64 21 33 57 60 25 30 14 3 1 8 49 42 27 11 35 26 2 46 7 23 39 51 16 63 19 4 45 62 53 5 55 22 15 18 6 29 61 28 10 17 52 54 31 12 37 41 50 20 43 48 9 58 34 38 13 40 44 36 24
stdout
28 2 3