当前位置: 首页> 房产> 市场 > 三亚app开发公司_免费推广网站入口2022_seo公司上海牛巨微_新冠疫情最新消息今天

三亚app开发公司_免费推广网站入口2022_seo公司上海牛巨微_新冠疫情最新消息今天

时间:2025/7/11 13:57:30来源:https://blog.csdn.net/LiuYQi/article/details/143087804 浏览次数:0次
三亚app开发公司_免费推广网站入口2022_seo公司上海牛巨微_新冠疫情最新消息今天

考核内容:

在指定的题库中自主选择不少于 15 道算法题并完成解题,其中题目难度分配如下:

  • 简单题不少于 10 道
  • 中等题不少于 4 道
  • 困难题不少于 1 道

解答代码

23. 不再贪心的小包(困难)

代码实现:


public class Main {private static int[] factorialCache;public static int solution(int n, int m, int s, int[] like) {// 初始化缓存数组factorialCache = new int[like[n - 1] + 1];return backtrack(0, 0, 0, n, m, s, like);}public static int backtrack(int index, int currentSum, int usedMagicSticks, int n, int m, int s, int[] like) {// 如果已经遍历完所有甜点if (index == n) {// 如果当前喜爱值之和等于预期值,返回 1 表示找到一种方案,否则返回 0return currentSum == s ? 1 : 0;}// 不使用魔法棒的情况int count = backtrack(index + 1, currentSum + like[index], usedMagicSticks, n, m, s, like);// 如果还有魔法棒可用if (usedMagicSticks < m) {// 使用魔法棒的情况int factorial = getFactorial(like[index]);// 这里是关键步骤,您需要思考如何正确地累加方案数count += backtrack(index + 1, currentSum + factorial * like[index], usedMagicSticks + 1, n, m, s, like);}return count;}public static int getFactorial(int num) {// 如果缓存中已经有值,则直接返回if (factorialCache[num] != 0) {return factorialCache[num];}// 0和1的阶乘是1if (num == 0 || num == 1) {factorialCache[num] = 1;} else {// 否则计算阶乘并缓存结果factorialCache[num] = num * getFactorial(num - 1);}return factorialCache[num];}public static void main(String[] args) {// You can add more test cases hereint[] like1 = { 1, 2, 3 };int[] like2 = { 1, 1, 1 };System.out.println(solution(3, 2, 6, like1) == 2);System.out.println(solution(3, 1, 1, like2) == 0);}
}

运行结果在这里插入图片描述

关键字:三亚app开发公司_免费推广网站入口2022_seo公司上海牛巨微_新冠疫情最新消息今天

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: