Bilibili 9.1笔试,N值乘法分解最小和

问答题后面两个不会,直接跳过。你们怎么样

编程题:
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Scanner;

/**
 * @author bty
 * @date 2022/9/1
 * @since 1.8
 **/
public class Main {
    private static int N=0;
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);

         N = in.nextInt();

        LinkedList<Integer> curRes = new LinkedList<>();
        List<List<Integer>> res = new ArrayList<>();
        dfs(N,1,curRes,res);
        if(res.size()==0){
            System.out.println(N);
            return;
        }
        int minSum = Integer.MAX_VALUE;

        for (List<Integer> r : res) {
            int temp = 0;
            for (Integer i : r) {
                temp +=i;
            }
            minSum = Math.min(minSum,temp);
        }
        System.out.println(minSum);

    }
    public static void dfs(int tar, int cur, LinkedList<Integer> curRes, List<List<Integer>> res){
        if(cur>tar){
            return;
        }
        if(cur==tar){
            res.add(new ArrayList<>(curRes));
            return;
        }


        for (int i = 2; i <= N-1; i++) {
            cur *= i;
            curRes.offerLast(i);
            dfs(tar,cur,curRes,res);
            curRes.pollLast();
            cur /=i;
        }
    }

}


#bilibili笔试#
全部评论
数学思维,最下数一定是质数之和,比如12=2+2+3 30=2+3+5,所以只需要这些就行,isT是判断是否为素数的
4 回复 分享
发布于 2022-09-01 20:24 北京
代码写这么复杂吗
点赞 回复 分享
发布于 2022-09-01 20:00 河北
不用那么复杂 找最小除数相加就好
点赞 回复 分享
发布于 2022-09-01 20:05 上海
代码也可以采用记忆化+递归
点赞 回复 分享
发布于 2022-09-01 20:06 广东
第一个题dp忘了初始化,第二个题输出格式有问题,太急了,没仔细😂
点赞 回复 分享
发布于 2022-09-01 20:12 北京
题好像还不一样? 我是十几个选择题+两个算法, 算法还很简单
点赞 回复 分享
发布于 2022-09-01 20:12 北京
问答确实把弟弟我搞破防了
点赞 回复 分享
发布于 2022-09-01 20:30 四川

相关推荐

我即大橘:耐泡王
点赞 评论 收藏
分享
1 1 评论
分享
牛客网
牛客企业服务