问题描述:
回形取数就是沿矩阵的边取数,若当前方向上无数可取或已经取过,则左转90度。一开始位于矩阵左上角,方向向下。
import java.util.Scanner;
public class 回形取数 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int m=sc.nextInt();
int n=sc.nextInt();
int[][] s=new int[m][n];
for(int i=0;i<m;i++) {
for(int j=0;j<n;j++) {
s[i][j]=sc.nextInt();
}
}
sc.close();
int count=m*n;
int q=0;
while(count>0) {
for(int i=q;i<m;i++) {
System.out.print(s[i][q]);
System.out.print(" ");
count--;
}
if(count<=0)
break;
for(int j=q+1;j<n;j++) {
System.out.print(s[m-1][j]);
System.out.print(" ");
count--;
}
if(count<=0)
break;
m--;
n--;
for(int i=m-1;i>=q;i--) {
System.out.print(s[i][n]);
System.out.print(" ");
count--;
}
if(count<=0)
break;
for(int j=n-1;j>=q+1;j--) {
System.out.print(s[q][j]);
System.out.print(" ");
count--;
}
q++;
if(count<=0)
break;
}
}
}