AcWing 756. 蛇形矩阵

AcWing 756. 蛇形矩阵,第1张

AcWing 756. 蛇形矩阵

链接
https://www.acwing.com/problem/content/758/

思路
题干的意思是让你顺时针去填空每一个位置
它是写游戏常见的思路:有墙就拐弯。
另外这里还可以通过偏移来减少判断的代码量
详细见代码注解

相关题目

题目844 走迷宫
题目1102 移动骑士
题目1421 威斯康星方形牧场

#include 

using namespace std;

const int N = 110;
int q[N][N];

int main()
{
    int n, m;
    cin >> n >> m;
    int dx[] = {-1, 0, 1, 0}, dy[] = {0, 1, 0, -1};
    int x = 0, y = 0, d = 1;//定义初始填充位置与方向
    
    for (int i = 1; i <= n * m; i ++)
    {
        q[x][y] = i;//填充每一个位置
        int a = x + dx[d], b = y + dy[d];//如果没有撞墙,就一直延着一个方向走
        if(a < 0 || a >= n || b < 0 || b >= m || q[a][b])//墙,已经填充的位置也变成了墙
        {
            d = (d + 1) % 4;//如果撞墙了,就换方向
            a = x + dx[d], b = y + dy[d];
        }
        x = a, y = b;
    }
    for (int i = 0; i < n; i ++ )
    {
        for (int j = 0; j < m; j ++ )
        {
            cout << q[i][j] << ' ';
        }
        cout << endl;
    }
    
    return 0;
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5692442.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存