Java 邮票自动售货机

Java 邮票自动售货机,java,oop,Java,Oop,我被分配了一项任务,去开发一种为邮资分发邮票的算法 邮票自动售货机。我需要写一个函数,它将返回一个函数的最小戳记数 给定值。我们可以假设机器里总是有一个一分钱的邮票 函数原型如下所示: int min_number_of_stamps ( const int* array, /* input array of sorted stamp values */ size_t array_size, /* number of elements in array */ int request /* des

我被分配了一项任务,去开发一种为邮资分发邮票的算法 邮票自动售货机。我需要写一个函数,它将返回一个函数的最小戳记数 给定值。我们可以假设机器里总是有一个一分钱的邮票

函数原型如下所示:

int min_number_of_stamps (
const int* array, /* input array of sorted stamp values */
size_t array_size, /* number of elements in array */
int request /* desired value to of stamps */
);
函数将返回给定时间的最小戳记数 价值例如,如果数组是
[90,30,24,15,12,10,5,3,2,1]
,则 请求是
32
,输出应该是
2
一张30美分的邮票
一张2美分的邮票
分邮票


谁能帮我解决这个问题或给我一些提示吗?

你肯定有一个好的开始:你需要一个数组

与C/C++的两个区别:

1) 您不需要“数组大小”:Java数组“知道”它们的长度

2) 不能声明“const int*array”。相反,您必须指定“int[]数组”。。。然后初始化它

这里有一个很好的链接:

附言:

以下是您可能会考虑的Java类的框架:

public class StampVendingMachine {

  public static void main (String[] args) {
    // Your program starts in this method...
  }

  public int minStamps (int num_stamps) {
    // This is where you can compute how many stamps 
  }

  // This can be your "lookup table"
  private int[] min_number_of_stamps;
}
缴费灵:

另一个链接:


你肯定有一个好的开始:你需要一个阵列

与C/C++的两个区别:

1) 您不需要“数组大小”:Java数组“知道”它们的长度

2) 不能声明“const int*array”。相反,您必须指定“int[]数组”。。。然后初始化它

这里有一个很好的链接:

附言:

以下是您可能会考虑的Java类的框架:

public class StampVendingMachine {

  public static void main (String[] args) {
    // Your program starts in this method...
  }

  public int minStamps (int num_stamps) {
    // This is where you can compute how many stamps 
  }

  // This can be your "lookup table"
  private int[] min_number_of_stamps;
}
缴费灵:

另一个链接:


因为这是家庭作业:

我是Java的新手,不知道是否有人能帮我解决这个问题

如果你是说。。。“给我一个解决方案”。。。这显然是不合适的,也不符合你的长远利益

。。。或者给我一些提示去做

  • 从算法的角度,想想你会怎么做,告诉一个6岁的孩子去做。。。假设他/她不懂乘法和除法。RiverC的评论是一个很好的开始
  • 您似乎没有掌握Java语言的基本知识:
      虽然语法在很多方面都是相似的,但是java和C++或C++是非常不同的。不要期望你的C/C++知识会传到java。例如:
      • Java没有函数,它有方法
      • Java的数组声明和初始化语法与C/C++不同
      • Java数组在一些重要方面与C/C++在语义上不同
    • 要开始学习,您需要阅读一本好的Java教科书的前几章(例如Java讲师推荐的那本),或者阅读Oracle Java教程。如果你跳过这一步,我预测你会挣扎。(如果你没有时间,因为你的任务截止日期迫在眉睫,这几乎是肯定的…)

  • 因为这是家庭作业:

    我是Java的新手,不知道是否有人能帮我解决这个问题

    如果你是说。。。“给我一个解决方案”。。。这显然是不合适的,也不符合你的长远利益

    。。。或者给我一些提示去做

  • 从算法的角度,想想你会怎么做,告诉一个6岁的孩子去做。。。假设他/她不懂乘法和除法。RiverC的评论是一个很好的开始
  • 您似乎没有掌握Java语言的基本知识:
      虽然语法在很多方面都是相似的,但是java和C++或C++是非常不同的。不要期望你的C/C++知识会传到java。例如:
      • Java没有函数,它有方法
      • Java的数组声明和初始化语法与C/C++不同
      • Java数组在一些重要方面与C/C++在语义上不同
    • 要开始学习,您需要阅读一本好的Java教科书的前几章(例如Java讲师推荐的那本),或者阅读Oracle Java教程。如果你跳过这一步,我预测你会挣扎。(如果你没有时间,因为你的任务截止日期迫在眉睫,这几乎是肯定的…)

  • 您可以从第一个戳记值(最高)开始,然后继续,直到找到小于请求的戳记值为止。然后您只需将该戳记添加到一个数组中,从请求中减去并重复,直到请求为零。我建议先提出一个通用算法来解决这个问题,然后再考虑如何用Java编程。现在的问题是,听起来你基本上希望所有的工作都能为你完成。@RiverC说你的面额是[90,80,70,1]。你的要求是140。按照你的建议,我会得到90+(50 x 1)。我希望得到70+70。您从第一个戳记值(最高)开始,然后继续,直到找到小于请求的戳记值。然后您只需将该戳记添加到一个数组中,从请求中减去并重复,直到请求为零。我建议先提出一个通用算法来解决这个问题,然后再考虑如何用Java编程。现在的问题是,听起来你基本上希望所有的工作都能为你完成。@RiverC说你的面额是[90,80,70,1]。你的要求是140。按照你的建议,我会得到90+(50 x 1)。我希望得到70+70。非常感谢您的回复!这些真的很有帮助,对我来说很有意义。我想我正朝着正确的方向前进。非常感谢您的回复!这些真的很有帮助,对我来说很有意义。我想我正朝着正确的方向前进。