2612:Mine Sweeper
keyword
シミュレーション C++
概要
マインスイーパのボードを復号する問題。書くだけ。
int dx[] = {1,1,0,-1,-1,-1,0,1}; int dy[] = {0,1,1,1,0,-1,-1,-1}; int main(){ char board[12][12]; char ans[12][12]; char c; int n, i, j, k, cnt; bool touched=false; REP(i,12)REP(j,12)board[i][j]='.'; REP(i,12)REP(j,12)ans[i][j]='\0'; scanf("%d\n",&n); REPONE(i,n){ REPONE(j,n){ scanf("%c",&board[i][j]); } scanf("\n"); } REPONE(i,n){ REPONE(j,n){ scanf("%c",&c); if(c=='x'){ cnt = 0; REP(k,8)if(board[i+dy[k]][j+dx[k]]=='*')cnt++; ans[i-1][j-1] = cnt + '0'; if(board[i][j]=='*') touched = true; } else ans[i-1][j-1] = '.'; } scanf("\n"); } if(touched)REPONE(i,n)REPONE(j,n)if(board[i][j]=='*')ans[i-1][j-1]='*'; REP(i,n)printf("%s\n",ans[i]); return 0; }