範例程式碼 uva10813

//uva10813
#include <bits/stdc++.h>
using namespace std;

int table[5][5];    // 5*5 }CAЬƦrɪ٨SQs츹AYQs츹AhӦmЬ -1
int input[75];      // ŪisǪ}C

// ˬd}CO_suAq ( ii, jj ) _IAO_P@AP@CAP@﨤uAֿn -1
bool check(int ii, int jj){
    int a1 = 0, a2 = 0, a3 = 0, a4 = 0;
    for(int i=0;i<5;i++){
        for(int j=0;j<5;j++){
            if(table[i][j]==-1){
                if(i==ii)       a1++;   // P@
                if(j==jj)       a2++;   // P@C
                if(i+j==ii+jj)  a3++;   // 﨤u
                if(i-j==ii-jj)  a4++;   // D﨤u
            }
        }
    }
    if(a1==5||a2==5||a3==5||a4==5)  return true;    // ֿnӡAhsu
    else                            return false;   // _hASsu
}

//pG id X{b 5*5 }CAhӦmq id Ь -1A۩Is check AˬdO_su
bool mark(int id){
    for(int i=0;i<5;i++){
        for(int j=0;j<5;j++){
            if(table[i][j]==id){
                table[i][j]=-1;
                return check(i,j);
            }
        }
    }
    return false;
}

int main(){
freopen("l.txt","w",stdout);
    int test = 0;
    cin>>test;
    while(test--){      // C@մAŪJѽLAH 75 ӼƦrs
        // ŪJ 5*5 }C
        memset(table, 0, sizeof(table));
        table[2][2] = -1;
        for(int i=0;i<5;i++){
            for(int j=0;j<5;j++){
                if(i==2&&j==2)  continue;
                cin>>table[i][j];
            }
        }

        // ŪJs
        for(int i=0;i<75;i++)   cin>>input[i];

        // ھ 5*5 }CΥsǡAP_ĴX^X}lX{su
        for(int i=0;i<75;i++){
            if(mark(input[i])){
                printf("BINGO after %d numbers announced\n",i+1);
                break;
            }
        }
    }
    return 0;
}