3752
keyword
概要
問題名:字母旋转游戏
アルファベットを渦巻き状に出力する問題。
実装ゲー。方向とか考えるのは面倒なので、何らかの座標変換して完全に線形にしてしまいたい。
char c; inline void inc(){ if(c=='Z') c = 'A'; else c++; return ; } int main(){ int n, m, i, j, k, d; int x, y, nx, ny; int dx[] = {1,0,-1,0}, dy[] = {0,-1,0,1}; c = 'A'; cin >> n >> m; vector< vector<char> > board(n+2,vector<char>(m+2,'A')); REPONE(i,n)REPONE(j,m) board[i][j] = '-'; x = y = 1; d = 0; while(1){ board[y][x] = c; inc(); REP(k,4){ ny = y + dy[(d+k)%4]; nx = x + dx[(d+k)%4]; if(board[ny][nx] == '-'){ y = ny; x = nx; d = (d+k)%4; break; } } if(k==4)break; } REPONE(i,n){ REPONE(j,m){ printf(" %c",board[i][j]); } putchar('\n'); } return 0; }