题目描述
螺旋矩阵是指一个呈螺旋状的矩阵,由外而内地实现:数字由第一行开始到右边不断变大,向下变大,向左变大,向上变大,如此循环。
输入格式
两个整数n和m。
输出格式
一个 n 行矩阵,每行 m 个数,每个数场宽为 5。
样例数据
输入样例 #1 | 输出样例 #1 |
---|---|
5 5 | 1 2 3 4 5 16 17 18 19 6 15 24 25 20 7 14 23 22 21 8 13 12 11 10 9 |
样例分析
如上所述。
数据范围
对于 100% 的数据:1≤N,M≤100
解题:
#include<bits/stdc++.h>
using namespace std;
int n,m,x=1,y=1,st=1,t,a[110][110],dx[4]={0,1,0,-1},dy[4]={1,0,-1,0};
int main(){
cin>>n>>m;
for(int i=1;i<=110;i++)for(int j=1;j<=110;j++)a[i][j]=-1;
for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)a[i][j]=0;
a[1][1]=1;
while(st<n*m){
if(a[x+dx[t]][y+dy[t]]!=0)t=(t+1)%4;
x+=dx[t];
y+=dy[t];
a[x][y]=++st;
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++)cout<<setw(5)<<a[i][j];
cout<<endl;
}
return 0;
}