本觉得没必要写了,看到网上好像有些java的代码超时了
蓝桥杯基础练习:回形取数
问题描述
回形取数就是沿矩阵的边取数,若当前方向上无数可取或已经取过,则左转90度。一开始位于矩阵左上角,方向向下。
输入格式
输入第一行是两个不超过200的正整数m, n,表示矩阵的行和列。接下来m行每行n个整数,表示这个矩阵。
输出格式
输出只有一行,共mn个数,为输入矩阵回形取数得到的结果。数之间用一个空格分隔,行末不要有多余的空格。
样例输入
3 3
1 2 3
4 5 6
7 8 9
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 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 }