蛇形矩阵经典解答题目链接
开门见山,这道题的解答需要引入一个偏移量的概念,依次从右下左上移动,如走到底,则需拐弯移动。(哈哈,感觉有点像贪吃蛇,不多说了,代码如下,期待关注,一起学习,共同进步!)
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,m;
cin>>n>>m;
int x=0,y=0;
int dx[4]={0,1,0,-1}; //横坐标的偏移量
int dy[4]={1,0,-1,0}; //纵坐标的偏移量
int b[101][101];
memset(b,0,sizeof(b));
int w=0;
for(int a=1;a<=n*m;a++)
{
b[x][y]=a;
int c=x+dx[w];
int d=y+dy[w];
if(c<0||c>=n||d<0||d>=m||b[c][d])
{
w=(w+1)%4; //拐弯;
c=x+dx[w];
d=y+dy[w];
}
x=c;
y=d;
}
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
cout<<b[i][j]<<' ';
}
cout<<endl;
}
return 0;
}