当前位置: 首页 > 知识库问答 >
问题:

计算数字面额的最大最佳组合

澹台奇略
2023-03-14

问题陈述:

我需要得到一个给定数字的最佳面额组合。例如:我有三种面额{50,25,10},给定的数字是30,那么列表应该返回

这有点类似于硬币问题,但我无法得到面额的值。

重新GeofenceStackOverFlow硬币更改DP解决方案,以跟踪硬币以下是我迄今为止所尝试的:

public static int[] minChange(int[] denom, int changeAmount) {
    int n = denom.length;
    int[] count = new int[changeAmount + 1];
    int[] from = new int[changeAmount + 1];

    count[0] = 1;
    for (int i = 0; i < changeAmount; i++ )
      if (count[i] > 0)
        for (int j = 0; j < n; j++ ) {
          int p = i + denom[j];
          if (p <= changeAmount) {
            if (count[p] == 0 || count[p] > count[i] + 1) {
              count[p] = count[i] + 1;
              from[p] = j;
            }
          }
        }

    // No solutions:
    if (count[changeAmount] == 0)
      return null;

    // Build answer.
    int[] result = new int[count[changeAmount] - 1];
    int k = changeAmount;
    while (k > 0) {
      result[count[k] - 2] = denom[from[k]];
      k = k - denom[from[k]];
    }
    return result;
  }

若这个值完全可以被一个面额整除,那个么这个方法很好用。另一方面,我根本不起作用。


共有1个答案

乐正嘉瑞
2023-03-14

一旦您在2D数组中找到了动态规划解决方案,您就可以通过从数组末尾回溯(arr[n][n])来找出哪些面额是最优的。

 类似资料:
  • 我有一个背景工作,需要合并很多项目在一起。我想将其拆分为多个“子作业”,每个子作业合并数据的一个子集,然后最后一个过程将所有“子作业”的输出合并在一起。 一种简单的方法是将数据分成x元素组。问题是最后一个组可能有1个元素的剩余部分,因此它将是一个“noop”。我想找到最佳的“x”,这样组就大致相等,并且每个组中有最小和最大数量的元素(例如,不少于10个元素,不超过20个) 在Ruby中有什么好的算

  • 我有一个分辨率为1,1的光栅图像。 我想将分辨率降低到4,4,但仍然具有构成新4,4像素的像素的最大值。 我可以通过使用降低分辨率: 但是,这将为您提供构成此新像素的每个像素的平均最大值。 我试图将光栅转换为矩阵,因此它采取以下形式: 是否有方法计算行1至4和列1至4内所有值的最大值? 这还需要应用于整个矩阵,该矩阵具有1000个行和列,返回到矩阵形式,如下所示:

  • 我有下面的代码,其中计算最小和最大订单项目从列表并按预期工作。我想知道是否可以进一步重构/改进,使其更优化和高性能地处理数千或订单列表。 我故意不做 Collections.min(itemFrequencyMap.values()) 和 因为它需要对所有值进行两次迭代,然后再次循环遍历 以查找值和的条目。

  • 问题内容: 我有ID为的商品。现在我有如下数据。每行都有一个offerId。由数组中的组合组成。是那个的价值 现在,我必须选择所有给我提供最佳ID组合(即最大总折扣)的offerId。 例如,在上述情况下:可能的结果可能是: [o2,o4,o5]最大折扣为。 注意。结果offerId应该不会重复ID。id的示例为[1,3,4],[5],[6]都是不同的。 其他组合可以是: 其id为[1],[3,5

  • 我需要帮助写一些代码,计算最大可能的胜利在N游戏的岩石剪刀纸。 给我的是数字N,这是岩石纸剪刀游戏的数量,后面是N组整数(1,2,3),每个都链接到岩石,纸或剪刀。但是,我们不知道哪个数字链接到每个选项。我需要帮助计算第一个人可以赢的最多游戏数。