zoukankan      html  css  js  c++  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
    ----------
    超时了。。。
     
    附上一组测试数据
    https://yunpan.cn/cY4JzEqmTSWvA  访问密码 9718
    -----------------
    import java.util.Scanner;  
    
    public class Main {  
      
        public static void main(String[] args) {  
            Scanner input=new Scanner(System.in);  
            int m=input.nextInt(),n=input.nextInt();  
            int arr[][]=new int[m][n];  
            for(int i=0;i<m;i++){  
                for(int j=0;j<n;j++){  
                    arr[i][j]=input.nextInt();  
                }  
            }  
            int i=0,j=0;  
            for (i = 0; i < (n + 1) / 2 && i < (m + 1) / 2; i++)  
            {  
                for (j = i; j < m - i; j++)  
                    System.out.print(arr[j][i]+" ");  
                for (j = i + 1; j < n - i; j++)  
                    System.out.print(arr[m - i - 1][j]+" ");  
                if (n - i - 1 > i)
                    for (j = m - i - 2; j >= i; j--)  
                        System.out.print( arr[j][n - i - 1]+" ");  
                if (m - i - 1 > i)  
                    for (j = n - i - 2; j > i; j--)  
                        System.out.print( arr[i][j]+" ");  
            }     
        }  
    }  
    --------------
     
    C语言通过
    ---------------
    #include <stdio.h>
     
    int main()
    {
        int m,n,i,j;
        int arr[210][210];
        scanf("%d%d",&m,&n);
         
        for(i = 0; i < m; i++)
            for(j = 0; j < n; j++)
                scanf("%d",&arr[i][j]);
         
        for(i = 0; i < (m+1)/2 && i < (n+1)/2; i++)
        {
            for(j = i; j < m-i; j++)
                printf("%d ",arr[j][i]);
            for(j = i+1; j < n-i; j++ )
                printf("%d ",arr[m-i-1][j]);
            if(n-i-1 > i)
            {
                for(j = m-i-2; j >= i; j--)
                    printf("%d ",arr[j][n-i-1]);
            }
            if (m-i-1 > i)
            {
                for(j = n-i-2; j > i; j--)
                    printf("%d ",arr[i][j]);
            }
        }
             
        return 0;
    }
  • 相关阅读:
    图01--[基本概念&&图的实现]
    并查集01--[Quick Find&&Quick Union]
    排序05--[计数排序&&基数排序&&桶排序]
    排序04--[快速排序&&希尔排序]
    harukaの赛前日常
    harukaの收藏夹
    hello world&Restart the Journey
    成外集训小记
    CSPS2019游记
    博弈论初步
  • 原文地址:https://www.cnblogs.com/watchfree/p/5307375.html
Copyright © 2011-2022 走看看