AcWing 756. 蛇形矩阵
原题链接
简单
作者:
柒_0
,
2021-01-20 21:52:59
,
所有人可见
,
阅读 189
题目描述
#include<iostream>
using namespace std;
const int N =110;
int n,m;
int q[N][N];
//q[N][N] 存放值
int main(){
cin >>n>>m;
int dx[]={-1,0,1,0};
int 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];
//通过a,b 来放置下一个位置的值
if(a<0||a>=n||b<0||b>=m||q[a][b]){
//如果超出范围或者q[a][b] 已经存放了值了 就会 换下一个方向 然后 a,b 会重新得到值
d=(d+1)%4;
a=x+dx[d],b=y+dy[d];
}
x=a,y=b;
//将a,b 的值给x,y
}
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
cout<<q[i][j]<<' ';
}
cout<<endl;
}
return 0;
}