题目描述
输入两个整数nn和mm,输出一个nn行mm列的矩阵,将数字11到n * mn∗m按照回字形填充至矩阵中
样例输入
输入共一行,包含两个整数nn和mm
样例输出
输出满足要求的矩阵
矩阵占nn行,每行包括mm个空格隔开的整数
样例
样例一
输入数据 1
3 3
Copy
输出数据 1
1 2 3
8 9 4
7 6 5
Copy
数据范围
1 \le n, m \le 1001≤n,m≤100
代码:
#include <iostream>
using namespace std;
const int N=110;
int n,m;
int q[N][N];
int main()
{
int a,b;
cin >> n >> m;
int d=1;
int x=0,y=0;
int dx[] = {-1,0,1,0}, dy[] = {0,1,0,-1};//偏移量
for(int i=1 ; i<=n*m ; i++)
{
q[x][y]=i;
a=x+dx[d],b=y+dy[d];//按控制的方向移动
if(a<0 || b<0 || q[a][b] || a>=n || b>=m)
{
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;
}
return 0;
}