1970:The Game
keyword
概要
五目並べの盤面が与えられる。どちらが勝っているか、どこに5連があるかを答える問題。ただし5連は多くても1つしか存在しない。
長連になっていないことさえ注意すれば得に問題は無い。番兵を置いておけば楽できる。
int main(){ int board[40][40], i, j, x, y, rept, win; scanf("%d",&rept); while(rept--){ REP(i,40)REP(j,40)board[i][j] = 0; for(i=10;i<29;i++)for(j=10;j<29;j++)scanf("%d",board[i]+j); for(j=10;j<29;j++)for(i=10;i<29;i++)if(board[i][j]>0){ win = board[i][j]; if((board[i+1][j] == win && board[i+2][j] == win && board[i+3][j] == win && board[i+4][j] == win && board[i+5][j] != win && board[i-1][j] != win) ||(board[i][j+1] == win && board[i][j+2] == win && board[i][j+3] == win && board[i][j+4] == win && board[i][j+5] != win && board[i][j-1] != win) ||(board[i+1][j+1] == win && board[i+2][j+2] == win && board[i+3][j+3] == win && board[i+4][j+4] == win && board[i+5][j+5] != win && board[i-1][j-1] != win) ||(board[i-1][j+1] == win && board[i-2][j+2] == win && board[i-3][j+3] == win && board[i-4][j+4] == win && board[i-5][j+5] != win && board[i+1][j-1] != win)){ y = i-9; x = j-9; goto end; } } end:; if(i==29 && j==29) printf("0\n"); else printf("%d\n%d %d\n",win,y,x); } return 0; }