zoukankan      html  css  js  c++  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             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  }  
  • 相关阅读:
    常见排序算法总结(C语言版)
    “仿QQ局域网聊天软件”项目-常用编程技巧总结
    Java集合类之向量Vector
    Java集合类之LinkedList链表
    Java集合ArrayList的应用
    Java集合类之ArrayList
    Java二维数组
    二分查找
    快速排序法QuickSort
    插入排序InsertionSort
  • 原文地址:https://www.cnblogs.com/lolybj/p/6496176.html
Copyright © 2011-2022 走看看