蓝桥杯 java 回形取数

来源:互联网 发布:网络大电影票房 编辑:程序博客网 时间:2024/06/17 16:55

回形取数

Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 39  Solved: 8[Submit][Status][Web Board]

Description

回形取数就是沿矩阵的边取数,若当前方向上无数可取或已经取过,则左转90度。一开始位于矩阵左上角,方向向下。 

Input

输入第一行是两个不超过200的正整数m,  n,表示矩阵的行和列。接下来m行每行n个整数,表示这个矩阵。

Output

输出只有一行,共mn个数,为输入矩阵回形取数得到的结果。数之间用一个空格分隔,行末不要有多余的空格。

Sample Input

3 3 1 2 3 4 5 6 7 8 9

Sample Output

1 4 7 8 9 6 3 2 5

HINT

请关注微信公众号onlinejudge

Source

import java.util.ArrayList;import java.util.Arrays;import java.util.Scanner;            public class Main{       static int f[][],vis[][];    static int n,m,ans;        public static void main(String[] args) {            Scanner in = new Scanner(System.in);             n=in.nextInt();             m=in.nextInt();                         f=new int[n+5][m+5];            vis=new int[n+5][m+5];            for(int i=0;i<n;i++){            for(int j=0;j<m;j++){            f[i][j]=in.nextInt();            //System.out.println("*");            }            }                       ans=0;            col1(-1,0);            System.out.println();                    }private static void col1(int row,int col) {// TODO Auto-generated method stubint i;for( i=row+1;i<n;i++){if(vis[i][col]==1)break;vis[i][col]=1;ans++;System.out.print(f[i][col]);if(ans<n*m)System.out.print(" ");else return ;}row1(i-1,col);}private static void row1(int row,int col) {// TODO Auto-generated method stubint i;for(i=col+1;i<m;i++){if(vis[row][i]==1)break;vis[row][i]=1;ans++;System.out.print(f[row][i]);if(ans<n*m)System.out.print(" ");else return ;}col2(row,i-1);}private static void col2(int row, int col) {// TODO Auto-generated method stubint i;for( i=row-1;i>=0;i--){if(vis[i][col]==1)break;vis[i][col]=1;ans++;System.out.print(f[i][col]);if(ans<n*m)System.out.print(" ");else return;}row2(i+1,col);}private static void row2(int row, int col) {// TODO Auto-generated method stubint i;for(i=col-1;i>=0;i--){if(vis[row][i]==1)break;vis[row][i]=1;ans++;System.out.print(f[row][i]);if(ans<n*m)System.out.print(" ");else return;}col1(row,i+1);}   }

0 0