基础练习 回形取数

问题描述
  回形取数就是沿矩阵的边取数,若当前方向上无数可取或已经取过,则左转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             int n,m;
 6             Scanner input = new Scanner(System.in);
 7             n = input.nextInt();
 8             m = input.nextInt();
 9             int[][] a= new int[n][m];
10             for(int i=0;i<n;i++){
11                 for(int j=0;j<m;j++){
12                     a[i][j] = input.nextInt();
13                 }
14             }
15             int i=0,j=0;
16             int n1 = n;
17             int m1 = m;
18             int h = 0;
19             int k = 1;
20             if(n!=1){
21                 i = 1;
22                 System.out.print(a[0][0]);
23             }
24             else{
25                 System.out.print(a[0][0]);
26                 j = 1;
27             }
28                 
29             while(true){
30                 while(i<n1-1){
31                     System.out.print(" "+a[i][j]);
32                     k++;
33                     i++;
34                 }
35                 if(k==n*m-1||k==n*m){
36                     break;
37                 }
38                 while(j<m1-1){
39                     System.out.print(" "+a[i][j]);
40                     k++;
41                     j++;
42                 }
43                 if(k==n*m-1||k==n*m){
44                     break;
45                 }
46                 while(i>h){
47                     System.out.print(" "+a[i][j]);
48                     k++;
49                     i--;
50                 }
51                 if(k==n*m-1||k==n*m){
52                     break;
53                 }
54                 while(j>h+1){
55                     System.out.print(" "+a[i][j]);
56                     k++;
57                     j--;
58                 }
59                 if(k==n*m-1||k==n*m){
60                     break;
61                 }
62                 h++;
63                 n1--;
64                 m1--;
65             }
66             if(k==n*m-1)
67                 System.out.print(" "+a[i][j]);
68         }
69     
70  }  

 

posted @ 2017-03-03 13:04  来一点音乐  阅读(288)  评论(0编辑  收藏  举报