#include<bits/stdc++.h>
using namespace std;
int main()
{
int a[205][205];
int b[40005];
int m,n;
cin>>m>>n;
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
cin>>a[i][j];
}
int sum=m*n;
int x,y,k,t=0;
x=0;
y=0;
while(sum>0)//sum为一共要找的点的个数
{
for(k=0; k<m&&sum>0; x++,k++,sum--)//先向下
{
b[t++]=a[x][y];
}
x--;//此处x--是为了弥补上一循环中最后的x++
y++;
for(k=0; k<n-1&&sum>0; y++,k++,sum--)//再向右
{
b[t++]=a[x][y];
}
y--;//同上
x--;
for(k=0; k<m-1&&sum>0; x--,k++,sum--)//再向上
{
b[t++]=a[x][y];
}
x++;//同上
y--;
for(k=0; k<n-2&&sum>0; y--,k++,sum--)//再向左
{
b[t++]=a[x][y];
}
y++;//同上
x++;//此处x++意为已经找完一圈了开始进入下一行
m-=2; //每次找完一圈后,四个for循环中所搜索的点都少了两个
n-=2;
}
for(int i=0;i<t;i++)
{
if(i==0)
cout<<b[i];
else
cout<<" "<<b[i];
}
cout<<endl;
}
螺旋矩阵类似题目
于 2020-09-10 15:43:19 首次发布