[蓝桥杯]回形取数-方向向量+模拟
生活随笔
收集整理的這篇文章主要介紹了
[蓝桥杯]回形取数-方向向量+模拟
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
題目描述
回形取數(shù)就是沿矩陣的邊取數(shù),若當(dāng)前方向上無數(shù)可取或已經(jīng)取過,則左轉(zhuǎn)90度。一開始位于矩陣左上角,方向向下。
輸入
輸入第一行是兩個不超過200的正整數(shù)m, n,表示矩陣的行和列。接下來m行每行n個整數(shù),表示這個矩陣
輸出
輸出只有一行,共mn個數(shù),為輸入矩陣回形取數(shù)得到的結(jié)果。數(shù)之間用一個空格分隔,行末不要有多余的空格。
樣例輸入
3 3
1 2 3
4 5 6
7 8 9
樣例輸出
1 4 7 8 9 6 3 2 5
代碼如下:
#include <iostream> using namespace std;int dx[] = {1, 0, -1, 0}, dy[] = {0, 1, 0, -1}; const int N = 300; int a[N][N]; bool st[N][N];int main() {int m, n;cin >> m >> n;for (int i = 0; i < m; i++)for (int j = 0; j < n; j++)cin >> a[i][j];int x = 0, y = 0, d = 0;int count = 0;for (int i = 1; i <= n * m; i++) {cout << a[x][y];st[x][y] = true;count++;int xx = x + dx[d], yy = y + dy[d];if (xx < 0 || xx >= m || yy < 0 || yy >= n || st[xx][yy]) {d = (d + 1) % 4;xx = x + dx[d], yy = y + dy[d];}x = xx, y = yy;if (count != n * m) {cout << " ";}}return 0; }總結(jié)
以上是生活随笔為你收集整理的[蓝桥杯]回形取数-方向向量+模拟的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [蓝桥杯]错误票据---stringst
- 下一篇: [蓝桥杯2019初赛]不同子串-subs