天梯赛每日打卡05(41-45题解)

157 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第14天,点击查看活动详情

前言

今天比较那啥,但是练还是要练的不过只是做了5题(下午做的) 主要是这个玩意嘛:

嘿~全流程带你基于Pytorch手撸图片分类“框架“--HuClassify

累了,毁灭吧!

L1-045 宇宙无敌大招呼 (5 分)

在这里插入图片描述


import java.util.Scanner;

public class Main {
    //水5题吧
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String next = scanner.next();
        System.out.println("Hello "+next);
    }
}

L1-042 日期格式化 (5 分)

在这里插入图片描述

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String data = scanner.next();
        String[] split = data.split("-");
        System.out.println(split[2]+"-"+split[0]+"-"+split[1]);
    }
}

L1-041 寻找250 (10 分)

在这里插入图片描述

import java.io.BufferedInputStream;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(new BufferedInputStream(System.in));
        int index = 0;
        while (true){
            index++;
            int nextInt = scanner.nextInt();
            if(nextInt==250){
                System.out.println(index);
                return;
            }
        }
    }
}

L1-044 稳赢 (15 分)

在这里插入图片描述

import java.io.BufferedInputStream;
import java.util.Scanner;

public class Main {
    //每隔n个搞就行了
    public static void main(String[] args) {
        Scanner sc = new Scanner(new BufferedInputStream(System.in));
        int n = sc.nextInt();
        while (true) {
            for (int i = 0; i < n; i++) {
                String str = sc.next();
                if (str.equals("ChuiZi")) {
                    System.out.println("Bu");
                } else if (str.equals("Bu")) {
                    System.out.println("JianDao");
                } else if (str.equals("JianDao")) {
                    System.out.println("ChuiZi");
                } else {
                    return;
                }
            }
            String str1 = sc.next();
            if (str1.equals("End")) {
                return;
            } else {
                System.out.println(str1);
            }

        }
    }
}


L1-043 阅览室 (20 分)

在这里插入图片描述


import java.util.*;

public class Main {
    public static void main(String[] args)
    {	Scanner in=new Scanner(System.in);
        int id=0;
        int day;
        char c;
        String time;
        int[] book=new int[1005];
        reset(book);
        int totaltime=0;//总阅读时间
        int lend=0;//lend是当天读者借书次数
        day=in.nextInt();
        in.nextLine();
        while(true)
        {
            id=in.nextInt();
            c=in.next().charAt(0);
            time=in.next();
            in.nextLine();
            if(id==0)

            {
                long averagetime=0;
                if(lend!=0)
                {

                    averagetime=Math.round(totaltime*1.0/lend);//四舍五入
                    reset(book);
                    System.out.println(lend+" "+averagetime);
                    totaltime=0;
                    lend=0;
                    day--;
                }
                else
                {
                    System.out.println(0+" "+0);
                }
            }
            else if(c=='S'){
                book[id]=CountTime(time);
            }
            else if(c=='E'&&book[id]!=-1)
            {
                lend++;

                totaltime+=CountTime(time)-book[id];
                book[id]=-1;
            }
            if(day==0)
                break ;
        }
    }
    static int CountTime(String str)
    {
        int hour=(str.charAt(0)-'0')*10+(str.charAt(1)-'0');
        int min=(str.charAt(3)-'0')*10+(str.charAt(4)-'0');
        return hour*60+min;
    }
    static void reset(int[] book)
    {
        for(int i=0;i<1005;i++)
        {
            book[i]=-1;//book元素为-1说明这本书没有被借走
        }
    }
}

注意点

这题比较巧的就是,用数组表示书的编号,然后数组存的东西,可以表示时间也可以表示有没有在当天被借走。当天结束之后,有些书可能书借走了但是没在当天还,但是按照题目的 意思也不算进去,所以只需要考虑 S E 闭合就好了。然后这个用一个数组表示多个信息可以代替HashMap做优化。