fork download
  1. //m*m賓果對獎
  2. #include<stdio.h>
  3.  
  4. int main()
  5. {
  6. int n,m;
  7. scanf("%d %d\n" ,&n,&m);
  8. ////n<=10 m<=256
  9. int A[256][256][10];//賓果表
  10. int ans[256*256] ;//喊出的數字
  11. int B[256][256][10];//對獎後的賓果表
  12. for (int num=0;num<10;num++)
  13. {
  14. for (int i=0;i<256;i++)
  15. {
  16. for (int j=0;j<256;j++)
  17. {
  18. A[i][j][num]=0;
  19. B[i][j][num]=0;
  20. ans[j] =0;
  21. }
  22. }
  23. }
  24.  
  25. //輸入每個人的賓果表 A[m][m][n]
  26. for (int num=0;num<n;num++)
  27. {
  28. for (int i=0;i<m;i++)
  29. {
  30. for (int j=0;j<m;j++)
  31. { scanf("%d " ,&A[i][j][num]); }
  32. }
  33. }
  34.  
  35. //喊出的數字
  36. for (int k=0;k<m*m;k++)
  37. { scanf("%d " ,&ans[k]); }
  38.  
  39.  
  40. //對數字(一個一個數字慢慢對,喊中的數字為1)
  41. int line_link=0;//是否已經連線
  42. for (int w=0;w<m*m;w++)//數字
  43. {
  44. if (line_link==0)
  45. {
  46. break;
  47. }
  48. //對數字
  49. for (int num=0;num<n;num++)//人
  50. {
  51. for (int i=0;i<m;i++)
  52. {
  53. for (int j=0;j<m;j++)
  54. {
  55. if (A[i][j][num]==ans[w])
  56. { B[i][j][num]=1;}
  57. }
  58. }
  59. }
  60.  
  61. //對 1個數字後,檢查有沒有連線
  62. for (int num=0;num<n;num++)//人
  63. {
  64.  
  65. int num_line[2*m+2]; //0~2m+1 列:0~m-1 行:m~2m-1 兩斜線:2m、2m+1
  66. for (int i=0;i<m;i++)//檢查列連線
  67. {
  68. int sum=0;
  69. for (int j=0;j<m;j++)
  70. { sum=sum+B[i][j][num];}
  71. num_line[i] =sum;
  72. }
  73. for (int j=0;j<m;j++)//檢查行連線
  74. {
  75. int sum=0;
  76. for (int i=0;i<m;i++)
  77. { sum=sum+B[i][j][num];}
  78. num_line[m+j] =sum;
  79. }
  80. for (int i=0;i<m;i++)//檢查兩斜線連線
  81. {
  82. int sum1=0;
  83. int sum2=0;
  84. for (int j=0;j<m;j++)
  85. {
  86. if (i==j)
  87. { sum1=sum1+B[i][j][num]; }
  88. if (i==-j)
  89. { sum2=sum2+B[i][j][num]; }
  90. }
  91. num_line[2*m] =sum1;
  92. num_line[2*m+1]=sum2;
  93. }
  94.  
  95. //檢查 num_line[2*m+2]
  96. for (int s=0;s<2*m+2;s++)
  97. {
  98. if (num_line[s]==m&&line_link==0)
  99. {
  100. line_link=1;printf("%d " ,ans[w]);//顯示中獎數字
  101. printf("%d " ,num);break; //顯示人
  102. }
  103. else if (num_line[s]==m&&line_link==1)
  104. {
  105. printf("%d " ,num);break; //顯示人
  106. }
  107. }
  108. }
  109.  
  110.  
  111.  
  112. }
  113.  
  114.  
  115.  
  116.  
  117.  
  118.  
  119. return 0;
  120. }
  121.  
Success #stdin #stdout 0s 12120KB
stdin
2 3
1 2 3
4 5 6
7 8 9
1 2 3
4 5 6
7 8 9
1 2 4 8 6 3 9 5 7
stdout
Standard output is empty