蛇形矩阵

题目:输入两个整数 n 和 m,输出一个 n 行 m 列的矩阵,将数字 1 到 n×m 按照回字蛇形填充至矩阵中。

输入样例
3 3
输出样例
1 2 3
8 9 4
7 6 5

# include <iostream>
# include <cstdio>

using namespace std;

int s[100][100];

int main()
{
    int n, m;
    cin>>n>>m;
    int dx[]={-1, 0, 1, 0}, dy[]={0, 1, 0, -1};//偏移量
    int d=1;//当前方向
    int x=0, y=0;//当前位置
    for(int i=1;i<=n*m;i++)//这里循环的是要放的数
    {
        s[x][y]=i;
        int a=x+dx[d], b=y+dy[d];//下一个位置
        if(a<0||a>=n||b<0||b>=m||s[a][b])
        {
            d = (d+1)%4;//顺时针90°翻转方向
            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<<s[i][j]<<" ";
        }
        cout<<endl;
    }
    
    return 0;
}
上一篇:数字图像处理:图像的平移变换 matlab实现


下一篇:带你用汇编写循序