题目描述
输入两个整数n和m,输出一个n行m列的矩阵,将数字1到n×m按照回字蛇形填充至矩阵。
样例
以下写法的核心思想是将行和列分开赋值,通过布尔值设置开关,控制x和y
#include<iostream>
using namespace std;
int main()
{
int n,m;
cin>>n>>m;
int a=2;
int nums[100][100];
int x=0,y=0;
int hx=m-1,zx=n-1;
bool l=true;
bool lb=true;
nums[0][0]=1;
while(a<=m*n){
for(int j=0;j<hx;j++){
if(l)y++;
else y--;
nums[x][y]=a++;
}
l=!l;
if(a>2*m+n-2)hx--;
for(int j=0;j<zx;j++){
if(lb)x++;
else x--;
nums[x][y]=a++;
}
lb=!lb;
zx--;
}
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
cout<<nums[i][j]<<' ';
}
cout<<'\n';
}
return 0;
}