Algorithm used : Ad hoc, 2D array
long coding … but very easy…
#include <iostream> #include <cstdio> #include <cmath> using namespace std; void load_BINGO(); void ifMatchesThenPlaceIt(int num); bool isGameOver(); void load_announced_numbers(); int BINGO[5][5]; int array[75]; int main(){ freopen("inMe.txt","r",stdin); freopen("outMe.txt","w",stdout); int testCase; cin>>testCase; for(int tC = 1; tC<=testCase;tC++){ load_BINGO(); load_announced_numbers(); for(int b=1;b<=75;b++){ ifMatchesThenPlaceIt(array[b-1]); bool gameOver = isGameOver(); if(gameOver){ printf("BINGO after %d numbers announced\n",b); break; } } } return 0; } void load_BINGO(){ for(int i=0;i<5;i++){ for(int j=0;j<5;j++){ if(i==2&&j==2)BINGO[2][2] = 0; else{ cin>>BINGO[i][j]; } } } } void ifMatchesThenPlaceIt(int num){ bool found = false; for(int i=0;i<5;i++){ for(int j=0;j<5;j++){ if(num==BINGO[i][j]){ BINGO[i][j] = 0; found = true; break; } } if(found)break; } } bool isGameOver(){ int sum = 0; for(int j=0;j<5;j++)sum += BINGO[j][j]; if(sum==0)return true; sum = 0; for(int j=0;j<5;j++)sum += BINGO[j][4-j]; if(sum==0)return true; for(int i=0;i<5;i++){ sum =0; for(int j=0;j<5;j++)sum += BINGO[i][j]; //searching match in rows... if(sum==0)return true; sum = 0; for(int j=0;j<5;j++)sum += BINGO[j][i];//searching match in columns... if(sum==0)return true; } return false; } void load_announced_numbers(){ for(int i=0;i<75;i++)cin>>array[i]; }
You must be logged in to post a comment.