模拟,设置偏移量
先往右,再往下,在往左,再往上,依次循环。
int dx[4]={0,1,0,-1};
int dy[4]={1,0,-1,0};
//
// main.cpp
// 756. 蛇形矩阵
//
// Created by 翁一帆 on 2019/5/23.
// Copyright © 2019 mouweng. All rights reserved.
//
#include <iostream>
#include <algorithm>
using namespace std;
const int N = 110;
int map[N][N];
bool res[N][N];
int main(){
int n,m;
scanf("%d %d",&n,&m);
int dx[4]={0,1,0,-1};
int dy[4]={1,0,-1,0};
int x=0,y=0,d=0;
for(int i=1;i<=n*m;i++){
int nx=x+dx[d];
int ny=y+dy[d];
if(nx<0 || nx>=n ||ny<0 || ny>=m || res[nx][ny]){
d=(d+1)%4;
nx=x+dx[d];ny=y+dy[d];
}
map[x][y]=i;
res[x][y]=1;
x=nx;y=ny;
}
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
cout<<map[i][j]<<" ";
}
cout<<endl;
}
}