import java.util.Scanner;
public class Main {
static int a[][];
static int n;
static int m;
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
n=sc.nextInt();//m行
m=sc.nextInt();//n行
a=new int[n][m];
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
a[i][j]=sc.nextInt();
}
}
int count=m*n;
int k=0;//横坐标
int l=0;//纵坐标
int b=0;
while(count!=0){
while(k<n-b&&count!=0)
{//向下走,当横坐标小于长度减去圈数,往下走,以3*3为例
//k<3
if(k==0&&l==0){
System.out.print(a[k][l]);
k++;
//从第一个走a[0][0]
}else
{
System.out.print(" "+a[k++][l]);
//第二个开始走
}
//a[1][0],a[2][0],k=3,l=0
count--;
//一个数减一次
}
k--;//k=2
l++;//l=1
while(l<m-b&&count!=0){
//l<3
System.out.print(" "+a[k][l++]);
//a[2][1],a[2][2]
count--;
}
//l=3,k=2
k--;//k=1;
l--;//l=2;
while(k>=b&&count!=0){
//k>=0
System.out.print(" "+a[k--][l]);
//a[1][2],a[0][2]
count--;
}
//k=-1,l=2
k++;
l--;
while(l>b&&count!=0){
//l>1
System.out.print(" "+a[k][l--]);
//a[0][1]
count--;
}
//l=0
k++;//k=1
l++;//l=1
b++;//b=1
}
}
}
注意坐标变化,以及mn所代表的