思路分析:
这个蛇形矩阵其实是有规矩可循的,左 -> 下 -> 右 -> 上,首先有一个点我们是完全可以确定的那就是第一个点永远都是1,然后我们永远都是先把最外层然后依次向内访问,直到所有点都被访问为止,也就是当这个点为n*m时。
#include<iostream>
using namespace std;
int arr[110][110];
int main(){
int n,m,x=1,y=0;
cin>>n>>m;
int i=1;
while(i<=n*m){
while(y<m && arr[x][y+1]==0)
arr[x][++y]=i++;
while(x<n && arr[x+1][y]==0)
arr[++x][y]=i++;
while(y>1 && arr[x][y-1]==0)
arr[x][--y]=i++;
while(x>1 && arr[x-1][y]==0)
arr[--x][y]=i++;
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cout<<arr[i][j]<<" ";
}
cout<<endl;
}
return 0;
}