题目:
思路:两层循环,按照题目意思走回形字,注意代码巧妙的表示。用-1表示已经输出;分别表示四个方向,根据下标变化,决定加减。
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
int m=in.nextInt();
int n=in.nextInt();
int [][]a=new int[m][n];
for(int i=0;i<m;i++) {
for(int j=0;j<n;j++) {
a[i][j]=in.nextInt();
}
}
int length_l=0,length_r=0,length_m=m,length_n=n;
int cnt=0;
while(true) {
if(cnt==m*n)
break;
int x=length_l,y=length_r;
while(true) {
if(a[x][y]!=-1) {
System.out.print(a[x][y]+" ");
cnt++;
a[x][y]=-1;
}
if(x<length_m-1)
x++;
else
break;
}
while(true) {
if(a[x][y]!=-1) {
System.out.print(a[x][y]+" ");
cnt++;
a[x][y]=-1;
}
if(y<length_n-1)
y++;
else
break;
}
while(true) {
if(a[x][y]!=-1) {
System.out.print(a[x][y]+" ");
cnt++;
a[x][y]=-1;
}
if(x>length_l)
x--;
else
break;
}
while(true) {
if(a[x][y]!=-1) {
System.out.print(a[x][y]+" ");
cnt++;
a[x][y]=-1;
}
if(y>length_r)
y--;
else
break;
}
length_l++;length_r++;length_m--;length_n--;
}
}
}