Acwing-----756. 蛇形矩阵

算法

使用两个数组来表示上下左右

代码

#include <iostream>
using namespace std;

const int N = 110;
int n, m;
int g[N][N];

int main() {
    cin >> n >> m;
    int dx[4] = {0, 1, 0, -1};
    int dy[4] = {1, 0, -1, 0};
    int x = 1, y = 1, d = 0;
    
    for (int i = 1; i <= n * m; ++i) {
        if ((x + dx[d] > n || y + dy[d] > m || y + dy[d] == 0) || (g[x + dx[d]][y + dy[d]])) {
            d = (d + 1) % 4;
        }
        g[x][y] = i;
        x += dx[d];
        y += dy[d];
    }
    
    for (int i = 1; i <= n; ++i) {
        for (int j = 1; j <= m; ++j) {
            cout << g[i][j] << " ";
        }
        cout << endl;
    }
    return 0;
}
原文地址:https://www.cnblogs.com/clown9804/p/12582152.html