公式
D - Langton's Takahashi 解説
by
D - Langton's Takahashi 解説
by
cn449
問題文に書かれている通りに丁寧に場合分けと必要な処理を行えばよいです。
実装方針によっては以下の実装例の dx
, dy
のように、移動する距離を管理した配列を持っておくことで実装が楽になる場合があります。
実装例
#include <bits/stdc++.h>
using namespace std;
int dx[] = { -1,0,1,0 }; int dy[] = { 0,1,0,-1 };
int main() {
int h, w, n;
cin >> h >> w >> n;
vector<vector<char>> ans(h, vector<char>(w, '.'));
int x = 0, y = 0, m = 0;
for (int _ = 0; _ < n; _++) {
if (ans[x][y] == '.') {
ans[x][y] = '#';
m++;
}
else {
ans[x][y] = '.';
m += 3;
}
m %= 4;
x += dx[m]; y += dy[m];
if (x < 0) x += h; if (x >= h) x -= h;
if (y < 0) y += w; if (y >= w) y -= w;
}
for (int i = 0; i < h; i++) {
for (int j = 0; j < w; j++) {
cout << ans[i][j];
}
cout << '\n';
}
}
投稿日時:
最終更新: