Java教程

(蓝桥杯)试题 算法训练 回形取数

本文主要是介绍(蓝桥杯)试题 算法训练 回形取数,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

试题 算法训练 回形取数

  • 资源限制
  • 时间限制:1.0s 内存限制:512.0MB
  • 问题描述
  • 回形取数就是沿矩阵的边取数,若当前方向上无数可取或已经取过,则左转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
import java.util.Scanner;

public class Main {
    public static int count  = 0 ;
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in) ;
        int m = input.nextInt() ;
        int n = input.nextInt() ;
        int [][] matrix = new int [m][n] ;
        for(int i=0; i<m; i++){
            for(int j=0; j<n; j++){
                matrix[i][j] = input.nextInt() ;
            }
        }
        int leftRow = 0, leftColumn = 0, rightRow = m-1, rightColumn = n-1 ;
        while((leftRow <= rightRow) && (leftColumn <= rightColumn)){
            int r = leftRow , c = leftColumn ;
            while(r <= rightRow){
                    System.out.print(matrix[r++][c] + " ") ;
                    count ++ ;
            }
            if(count == m*n){
                break ;
            }
                r = rightRow;
                c++;
            while(c <= rightColumn){
                System.out.print(matrix[r][c++] + " ") ;
                count ++ ;
            }
            if(count == m*n){
                break ;
            }
                c = rightColumn;
                r--;
            while(r >= leftRow){
                System.out.print(matrix[r--][c] + " ") ;
                count ++ ;
            }
            if(count == m*n){
                break ;
            }
                r = leftRow;
                c--;
            while(c > leftColumn){
                System.out.print(matrix[r][c--] + " ") ;
                count ++ ;
            }
            if(count == m*n){
                break ;
            }
            leftRow ++;
            leftColumn ++ ;
            rightRow -- ;
            rightColumn -- ;
        }
    }
}

这篇关于(蓝桥杯)试题 算法训练 回形取数的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!