题目描述
输入两个整数n和m,输出一个n行m列的矩阵,将数字 1 到 n*m 按照回字蛇形填充至矩阵中。
输入格式
输入共一行,包含两个整数n和m。
输出格式
输出满足要求的矩阵。
矩阵占n行,每行包含m个空格隔开的整数。
数据范围
1≤n,m≤100
输入样例:
3 3
输出样例:
1 2 3
8 9 4
7 6 5
C++ 代码
#include<bits/stdc++.h>
using namespace std;
const int X[] = {0,1,0,-1};
const int Y[] = {1,0,-1,0};
int ma[105][105],n,m,x = 1,y,j;
bool check(int x,int y)
{
if(x < 1||x > n) return false;
if(y < 1||y > m) return false;
if(ma[x][y]) return false;
return true;
}
int main()
{
cin>>n>>m;
for(int i = 1;i <= m * n;i ++)
{
if(!check(x + X[j],y + Y[j]))
j = (j + 1) % 4;
x += X[j];y += Y[j];
ma[x][y] = i;
}
for(int i = 1;i <= n;i ++)
{
for(int j = 1;j <= m;j ++)
cout<<ma[i][j]<<" ";
puts("");
}
}
j = (j + 1) % 4;这一手加1膜4换向换的好啊