蛇形矩阵(偏移量做法)
以(x,y)为中心,遍历上下左右四个方向
d的值代表方向
#include <iostream>
using namespace std;
int q[100][100];
int main(){
int n,m;
cin >> n >> m;
//定义偏移量数组dx、dy
int x=0,y=0,d=1;
int dx[]={-1,0,1,0},dy[]={0,1,0,-1};
for(int k=1;k<=n*m;k++){
q[x][y]=k;
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;
}
}