#include <iostream>
using namespace std;
int main()
{
int a[201][201]={0};//
int m,n;
cin>>m>>n;
for(int i=1;i<=m;i++)
for(int j=1;j<=n;j++)
cin>>a[i][j];
int p=1,q=1;
int i=1;
int flag=1;
int x=m,y=n;
/*
基本思想就是模拟,下,右,上,左的循环,关键是找到控制转向的条件
*/
while(i<=m*n)
{
switch(flag)
{
case 1:
cout<<a[p][q]<<" ";
if(p==x+(m-x)/2)
{
flag=2;
q++;
y--;
i++;
break;
}
p++;
i++;
break;
case 2:
cout<<a[p][q]<<" ";
if(q==y+(n-y+1)/2)
{
flag=3;
p--;
x--;
i++;
break;
}
q++;
i++;
break;
case 3:
cout<<a[p][q]<<" ";
if(p==(m-x+1)/2)
{
flag=4;
q--;
y--;
i++;
break;
}
p--;
i++;
break;
case 4:
cout<<a[p][q]<<" ";
if(q==(n-y)/2+1)
{
flag=1;
p++;
x--;
i++;
break;
}
q--;
i++;
break;
}
}
return 0;
}
蓝桥杯 basic-25 回形取数
最新推荐文章于 2023-01-04 10:25:32 发布