蓝桥杯备赛第七天

1.报时助手


* Copyright (C), 2015-2019

* FileName: Timer

* Author: zun

* Date: 2019/2/15 22:41

* Description: 报时助手

* History:

* <author> <time> <version> <desc>

* 作者姓名 修改时间 版本号 描述

*/



import java.util.HashMap;

import java.util.Scanner;



/**

* 〈一句话功能简述〉

* 〈报时助手〉

*

* @author zun

* @create 2019/2/15

* @since 1.0.0

*/

public class Timer {

public static void main(String[] args){

Scanner s=new Scanner(System.in);



HashMap<String,String> map=new HashMap<>();

map.put("0","zero");

map.put("1","one");

map.put("2","two");

map.put("3","three");

map.put("4","four");

map.put("5","five");

map.put("6","six");

map.put("7","seven");

map.put("8","eight");

map.put("9","nine");

map.put("10","ten");

map.put("11","eleven");

map.put("12","twelve");

map.put("13","thirteen");

map.put("14","fourteen");

map.put("15","fifteen");

map.put("16","sixteen");

map.put("17","seventeen");

map.put("18","eighteen");

map.put("19","nineteen");

map.put("20","twenty");

map.put("30","thirty");

map.put("40","forty");

map.put("50","fifty");

int hour=s.nextInt();

int mintue=s.nextInt();



if(mintue==0){

if(hour>20){

System.out.println(map.get(String.valueOf(hour/10*10))+" "+map.get(String.valueOf(hour%10))+" o'clock");

}

else{

System.out.println(map.get(String.valueOf(hour))+" o'clock");

}}

else{



if(hour>20){

if(mintue>20){

System.out.println(map.get(String.valueOf(hour/10*10))+" "+map.get(String.valueOf(hour%10))+" "+map.get(String.valueOf(mintue/10*10))+" "+map.get(String.valueOf(mintue%10)));

}

else{

System.out.println(map.get(String.valueOf(hour/10*10))+" "+map.get(String.valueOf(hour%10))+" "+map.get(String.valueOf(mintue)));

}





}

else{

if(mintue>20){

System.out.println(map.get(String.valueOf(hour))+" "+map.get(String.valueOf(mintue/10*10))+" "+map.get(String.valueOf(mintue%10)));

}

else{



System.out.println(map.get(String.valueOf(hour))+" "+map.get(String.valueOf(mintue)));

}







}

}



}

}

问题描述

  回形取数就是沿矩阵的边取数,若当前方向上无数可取或已经取过,则左转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 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]+" ");  
        }     
    }  
}

自己还是没写出来 丢人啊我的想法是使用一个辅助的flag 数组但是在边界的时候又不太可用 然后网上的基本就是使用总的个数来进行记录是否完成遍历,然后再记录圈数,便于设定向各个方向移动的范围。

被自己菜哭了 不过这些方法都存在数据大时,运行超时的情况 也不知道如何优化,还是得好好钻研。

-----------------------

自己重新写了一下 方法,解决了数据过大时出现的运行超时的问题

/**
 * Copyright (C), 2015-2019
 * FileName: BackshapeNumber
 * Author:   zun
 * Date:     2019/2/19 11:25
 * Description: 回形取数
 * History:
 * <author>          <time>          <version>          <desc>
 * 作者姓名           修改时间           版本号              描述
 */

import java.util.Scanner;

/**
 * 〈一句话功能简述〉
 * 〈回形取数〉
 *
 * @author zun
 * @create 2019/2/19
 * @since 1.0.0
 */
public class BackshapeNumber {
    public static void main(String[] args) {
        Scanner input=new Scanner(System.in);
        int m=input.nextInt();
        int n=input.nextInt();
        int arr[][]=new int[m][n];
        boolean flag[][]=new boolean[m+2][n+2];

        for(int i=0;i<m;i++){
            for(int j=0;j<n;j++){
                arr[i][j]=input.nextInt();
            }
        }
        for(int i=0;i<m+2;i++){
            for(int j=0;j<n+2;j++){
                if(i==0||j==0||j==n+1||i==m+1){
                    flag[i][j]=false;
                }
                else{
                    flag[i][j]=true;}
            }
        }
        int i=0,j=0;
        int count=0;
        while(count<(m*n)){

            while(flag[i+1][j+1]){
                flag[i+1][j+1]=false;
                System.out.print(arr[i++][j]+" ");
                count++;
            }
            i--;
            j++;
            while(flag[i+1][j+1]){
                flag[i+1][j+1]=false;
                System.out.print(arr[i][j++]+" ");
                count++;

            }
            j--;
            i--;
            while(flag[i+1][j+1]){
                flag[i+1][j+1]=false;
                System.out.print(arr[i--][j]+" ");
                count++;
            }
            i++;
            j--;
            while(flag[i+1][j+1]){
                flag[i+1][j+1]=false;
                System.out.print(arr[i][j--]+" ");
                count++;
            }
            j++;
            i++;
        }

    }

}
发布了19 篇原创文章 · 获赞 7 · 访问量 9926

猜你喜欢

转载自blog.csdn.net/weixin_42297075/article/details/87519315