描述
回形取数就是沿矩阵的边取数,若当前方向上无数可取或已经取过,则左转90度。一开始位于矩阵左上角,方向向下。
输入
输入第一行是两个不超过 200 的正整数 m, n,表示矩阵的行和列。接下来 m 行每行 n 个整数,表示这个矩阵。
输出
输出只有一行,共 m * n 个数,为输入矩阵回形取数得到的结果。数之间用一个空格分隔,行末不要有多余的空格。
输入样例 1
3 3
1 2 3
4 5 6
7 8 9
输出样例 1
1 4 7 8 9 6 3 2 5
输入样例 2
3 2
1 2
3 4
5 6
输出样例 2
1 3 5 6 4 2
参考程序
import java.util.*;
public class Main
{
public static void main(String[] args)
{
Scanner reader =new Scanner(System.in);
int m=reader.nextInt();
int n=reader.nextInt();
int i,j,count=0,turn=1,matrix[][];
matrix=new int [m][n];
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
matrix[i][j]=reader.nextInt();
}
}
i=j=0;
while(true)
{
++count;
if(count==m*n)
{
System.out.print(matrix[i][j]+"\n");
break;
}
else
{
System.out.print(matrix[i][j]+" ");
if(turn%4==1)
{
if(i<m-(turn+3)/4)
{
i++;
}
else
{
turn++;
j++;
}
}
else if(turn%4==2)
{
if(j<n-(turn+2)/4)
{
j++;
}
else
{
turn++;
i--;
}
}
else if(turn%4==3)
{
if(i>(turn-3)/4)
{
i--;
}
else
{
turn++;
j--;
}
}
else
{
if(j>turn/4)
{
j--;
}
else
{
turn++;
i++;
}
}
}
}
}
}
计算机小白,水平较低,欢迎大家批评指正,不吝赐教!期待有更好的思路!