问题描述 回形取数就是沿矩阵的边取数,若当前方向上无数可取或已经取过,则左转90度。一开始位于矩阵左上角,方向向下。
输入格式 输入第一行是两个不超过200的正整数m, n,表示矩阵的行和列。接下来m行每行n个整数,表示这个矩阵。
输出格式 输出只有一行,共mn个数,为输入矩阵回形取数得到的结果。数之间用一个空格分隔,行末不要有多余的空格。
样例输入 3 3
1 2 3
4 5 6
7 8 9
样例输出 1 4 7 8 9 6 3 2 5
样例输入 3 2
1 2
3 4
5 6
样例输出 1 3 5 6 4 2
import java.util.Scanner;
public class Main {
public static int n,m,count,i=0,j=0;
public static int a[][];
public static void main(String[] args) {
Scanner s=new Scanner(System.in);
m=s.nextInt();
n=s.nextInt();
a=new int[m][n];
if(m<=0||m>200||n<=0||n>200) return;
for(int b=0;b<m;b++){
for(int c=0;c<n;c++){
a[b][c]=s.nextInt();
}
}
count=m*n;
while(count>0){
while(i<m&&a[i][j]!=-1){//数组判断不可放在前面 否则会出现下标超出范围的错误
System.out.print(a[i][j]+" ");
a[i][j]=-1;
i++;
count--;
}
i--;
j++;
while(j<n&&a[i][j]!=-1){
System.out.print(a[i][j]+" ");
a[i][j]=-1;
j++;
count--;
}
j--;
i--;
while(i>=0&&a[i][j]!=-1){
System.out.print(a[i][j]+" ");
a[i][j]=-1;
i--;
count--;
}
i++;
j--;
while(j>=0&&a[i][j]!=-1){
System.out.print(a[i][j]+" ");
a[i][j]=-1;
j--;
count--;
}
j++;
i++;
}
}
}