0

切手自動販売機用の切手を発行するためのアルゴリズムを開発する任務を与えられました。特定の値に対してスタンプの最小数を返す関数を作成する必要があります。マシンには常に 1 セントの切手があると想定できます。

関数プロトタイプは次のようになります。

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 stampなりone 2 cent stampます。

誰かがこの質問を解決するのを手伝ってくれますか、それを行うためのヒントを教えてくれますか?

4

2 に答える 2

4

あなたは確かに良いスタートを切った.配列が必要になる.

C/C++ との 2 つの違い:

1) 「array_size」は必要ありません: Java 配列は、その長さを「認識」しています。

2) 「const int* array」は宣言できません。代わりに、「int[]配列」を指定する必要があります...その後、初期化します。

ここに良いリンクがあります:

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:

もう 1 つのリンク:

封筒の郵便切手の最大値

于 2012-06-02T02:17:09.397 に答える
1

これは宿題なので:

私はJavaの初心者で、誰かがこの質問を解決するのを手伝ってくれるかどうか疑問に思っています

「解決策を教えてください」という意味であれば、明らかに不適切であり、あなたの長期的な利益にはなりません。

...または、それを行うためのヒントを教えてください。

わかった。

  1. アルゴリズムの側面から、6 歳の子供にそれを行うように指示する方法を考えてみてください... 掛け算と割り算の方法を理解していなかったと仮定します。RiverC のコメントは、開始するのに適した場所です。
  2. Java 言語の基本を理解していないようです。
    • 構文は多くの点でていますが、Java は C や C++ とは大きく異なります。C / C++ の知識が Java に引き継がれるとは思わないでください。例えば:
      • Javaには関数がなく、メソッドがあります。
      • Java の配列宣言と初期化構文は、C / C++ のものとは異なります。
      • Java 配列は、いくつかの重要な点で C / C++ と意味的に異なります。
    • 開始するには、優れた Java テキスト (Java の講師が推奨するものなど) の最初の数章を読むか、Oracle Java チュートリアルを読む必要があります。このステップをスキップすると、苦労することになると思います。(そして、課題の締め切りが迫っていて時間がない場合は、ほぼ確実です...)
于 2012-06-02T02:50:15.887 に答える