#556. 蛇形矩阵(3月23日)
ID: 556传统题1000ms256MiB尝试: 110已通过: 32难度: 1上传者:
qyc标签>
题目描述
输入两个整数 �n 和 �m,输出一个 �n 行 �m 列的矩阵,将数字 11 到 �n×�m 按照回字蛇形填充至矩阵中。
具体矩阵形式可参考样例。
输入格式
输入共一行,包含两个整数 �n 和 �m。
输出格式
输出满足要求的矩阵。 矩阵占 �n 行,每行包含 �m个空格隔开的整数。
样例
输入数据 1
3 3
输出数据 1
1 2 3
8 9 4
7 6 5
数据范围
1≤�,�≤100.1≤n,m≤100.
个人题解:
#include<bits/stdc++.h>
using namespace std;
int a[105][105];//定义数组,将蛇型数存入其中
int main()
{
int n,m,q=1,w=0;//设定初始值
cin>>n>>m;
for(int i=1;i<=n*m;)//1开始直到范围存满
{
while(w<m&&!a[q][w+1]) a[q][++w]=i++;//左向右循环,若最左侧超出范围或有其他数字则不满足条件
while(q<n&&!a[q+1][w]) a[++q][w]=i++;//上向下循环,同上设定限制
while(w>1&&!a[q][w-1]) a[q][--w]=i++;//右向左
while(q>1&&!a[q-1][w]) a[--q][w]=i++;//下向上
}
for(int i=1;i<=n;i++)//按格式循环输出
{
for(int j=1;j<=m;j++)
{
cout<<a[i][j]<<" ";
}
cout<<endl;
}
return 0;
}