AcWing 756. 蛇形矩阵
原题链接
简单
作者:
iodeer
,
2022-02-16 15:18:50
,
所有人可见
,
阅读 115
#include<iostream>
#include<cstdio>
using namespace std;
const int N = 105;
int num[N][N];
int main(){
int n,m;
cin>>n>>m;
// 方向偏量
int direct[4][2] = {
{-1,0},
{0,1},
{1,0},
{0,-1}
};
// 初始运动方向
int d = 1;
//当前坐标
int row = 0 ,line=0;
for(int i = 1; i <= n * m; i++){
num[row][line] = i;
// 下一个格子坐标
int newRow = row + direct[d][0];
int newLine = line + direct[d][1];
//撞墙
if(newRow < 0 || newRow >= n || newLine < 0 || newLine >= m || num[newRow][newLine]){
d = (d + 1) % 4;
newRow = row + direct[d][0];
newLine = line + direct[d][1];
}
row = newRow;
line = newLine;
}
for(int k = 0; k < n; k++){
for(int j = 0;j < m ;j++){
printf("%d ",num[k][j]);
}
printf("\n");
}
return 0;
}