邮票自动售货机

时间:2012-06-02 02:13:00

标签: java oop

我获得了一项任务,即开发一种为邮资分发邮票的算法 邮票自动售货机。我需要编写一个函数来返回a的最小戳记数 给定的价值。我们可以假设机器上总会有一分钱的邮票。

函数原型如下:

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,输出应为2one 30 cent stampone 2 cent stamp

有人可以帮我解决这个问题,或者给我一些暗示吗?

2 个答案:

答案 0 :(得分:4)

你的确有一个良好的开端:你需要一个阵列。

与C / C ++的两个不同之处:

1)您不需要“array_size”:Java数组“知道”它们有多长

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

这是一个很好的链接:

http://docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html

PS:

这是您可能考虑的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;
}

PPS:

另一个链接:

Maximum value of postage stamps on an envelope

答案 1 :(得分:1)

因为这是作业:

  

我是Java的新手,想知道是否有人可以帮我解决这个问题

如果你的意思是......“给我一个解决方案”......这显然是不恰当的,而且不符合你的长期利益。

  

......或者给我一些暗示去做。

行。

  1. 从算法方面考虑如何做到这一点,告诉一个6岁的孩子去做...假设他/她不明白如何繁衍和分裂。 RiverC的评论是一个很好的起点。
  2. 您似乎没有掌握Java语言的基础知识:
    • 虽然语法在很多方面与类似,但Java与C或C ++非常不同。不要指望你的C / C ++知识会延续到Java。例如:
      • Java没有函数,它有方法。
      • Java的数组声明和初始化语法与C / C ++不同。
      • 在某些重要方面,Java数组在语义上与C / C ++不同。
    • 为了帮助您入门,您需要阅读优秀Java教科书的前几章(例如,您的Java讲师推荐的那本),或阅读Oracle Java教程。如果你跳过这一步,我预测你会挣扎。 (如果你没有时间,因为你的作业截止日期即将来临,那几乎是确定的......)