回形取数

本觉得没必要写了,看到网上好像有些java的代码超时了

蓝桥杯基础练习:回形取数

问题描述
  回形取数就是沿矩阵的边取数,若当前方向上无数可取或已经取过,则左转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
 1 import java.util.Scanner;
 2 
 3 public class Main {
 4     public static void main(String args[]){
 5         Scanner sc = new Scanner(System.in);
 6         int m = sc.nextInt();
 7         int n = sc.nextInt();
 8         int[][] array = new int[m][n];
 9         for(int i=0;i<m;i++){
10             for(int j=0;j<n;j++){
11                 array[i][j] = sc.nextInt();
12             }
13         }
14         
15         int tot = 0,x=-1,y=0;
16         while(tot<m*n){
17             while(x+1 < m && array[x+1][y]!=-1){
18                 System.out.print(array[++x][y]+" ");
19                 array[x][y] = -1;
20                 ++tot;
21             }
22             while(y+1 < n && array[x][y+1] != -1){
23                 System.out.print(array[x][++y]+" ");
24                 array[x][y] = -1;
25                 ++tot;
26             }
27             while(x-1>=0 && array[x-1][y]!=-1){
28                 System.out.print(array[--x][y]+" ");
29                 array[x][y] = -1;
30                 ++tot;
31             }
32             while(y-1>=0 && array[x][y-1]!=-1){
33                 System.out.print(array[x][--y]+" ");
34                 array[x][y] = -1;
35                 ++tot;
36             }
37         }
38     }
39 
40 }
 
 
 
原文地址:https://www.cnblogs.com/techgy/p/12513885.html