題目大意
給定一個 $n \times n$ 的地圖,每個格子上有數字。請從地圖的中心出發,按照「龍捲風」的順序輸出數字。
題解
遇到這種類型的題目我們可以將 $x$ 和 $y$ 在各個方向的變化量用陣列做儲存,這樣實作起來會方便很多。觀察到走的步數為 $1, 1, 2, 2, 3, 3, \dots$,小心實作就可以了,細節請參考 code。
#include <bits/stdc++.h>
using namespace std;
const int dx[] = {0, -1, 0, 1};
const int dy[] = {-1, 0, 1, 0};
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
int n, dir;
cin >> n >> dir;
vector<vector<int>> grid(n, vector<int>(n));
for(int i = 0; i < n; i++) {
for(int j = 0; j < n; j++) {
cin >> grid[i][j];
}
}
int x = n / 2, y = n / 2;
cout << grid[x][y];
for(int l = 1; l < n; l++) {
for(int r = 0; r < 2; r++) {
for(int i = 0; i < l; i++) {
x += dx[dir];
y += dy[dir];
cout << grid[x][y];
}
dir = (dir + 1) % 4;
}
}
for(int l = 1; l < n; l++) {
x += dx[dir];
y += dy[dir];
cout << grid[x][y];
}
cout << "\n";
return 0;
}
如果本文對您有幫助的話幫忙點擊廣告和分享吧!
© 若無特別註明,本站文章皆由 WeakMouse's Coding Blog 原創 ,轉載引用本文前請先留言告知。本文轉載請註明文章源自 WeakMouse's Coding Blog ,作者 ,並附上原文連結: 【題解】Zerojudge c292 - APCS2017-0304-3數字龍捲風
0 留言