阿里笔试暑期实习 3.15-Java 第二题

第二题没写完,以为是可以一直分割下去,一直在推导dp
结束了才发现只能分两次,直接暴力两个for循环应该就可以
下面的代码不知道对不对,希望各位大佬指正
【格式是我用来进行本地测试的】
第二题 Java代码:
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.PrintWriter;
import java.util.Scanner;

public class AL_2 {
    public static Scanner in = new Scanner(new BufferedInputStream(System.in));
    public static PrintWriter out = new PrintWriter(new BufferedOutputStream(System.out));

    public static void main(String[] args) {
        while(true){
            int n = sc.nextInt();
            double sum = 0;//每种情况燃烧时间的和
            long count = 0;//可能的分割情况个数
            for(int  i = 1; i < n;i++){
                //第一次分割
                int  j = n-i;
                int max = Math.max(i, j);
                int min = Math.min(i,j);
                max -= min;//燃烧完短的,长的部分剩下的长度
                if(max >= 2){//进行第二次分割
                    for(int m = 1; m < max; m++){
                        sum += min;//加上短的那部分燃烧的时间
                        count++;//情况个数加一
                        int remain = max - m;
                        sum += Math.max(m,remain);//第二次分割完,燃烧时间应该是长的那部分的燃烧时间
                    }
                }else{
                    count++;//没进行第二次分割:比如:3,2
                    sum += Math.max(i, j);//燃烧时间直接加上长的那部分需要的燃烧时间
                }
            }
            System.out.printf("%.4f\n",sum/count);
        }
    }
}



#阿里笔试##笔试题目##笔经##Java#
全部评论
第一题怎么写,,,,
点赞 回复 分享
发布于 2021-03-24 19:41
第一题不是leetcode原题吗?1318题
点赞 回复 分享
发布于 2021-03-25 20:40

相关推荐

11-18 15:57
门头沟学院 Java
最终归宿是测开:这个重邮的大佬在重邮很有名的,他就喜欢打92的脸,越有人质疑他,他越觉得爽😂
点赞 评论 收藏
分享
评论
3
2
分享
牛客网
牛客企业服务