2016-04-26 11 views
0

配列は、ユーザーからの入力として取得されます。配列には整数が含まれます。可能であれば、100に近い値を得るために、いくつか、すべて、あるいはおそらく1つで十分です。Javaでターゲット番号を取得するためにn個の整数を配列に追加しますか?

  • アレイは、アレイ内の各整数を1-100の間の値を有する整数1-100
  • を含むことができ、いくつかは同じであってもよいです。配列内のランダムな順序で来る
  • 可能な限り100に近づくために加えるべき数は制限されていません
  • 複数の組み合わせが可能であるか等しい答えが等しく100に近い場合、 99および101の場合は、最高値を選択する必要があります。

私の問題は、実際にはどのようにループを動作させるのか分かりません。私は2つのネスティングを試みましたが、計算に必要な配列内の整数の数を知るのは難しいです。

//looping over all integers in the array 
for (int i = 0; i < myArray.length; i++) { 
    //check already here if it is close to 100? 
    //compare the integer above to the next 
    for (int j = i + 1; nextWeight < myArray.length; j++) { 
     //the results should be saved temporary to comparision to new sums 
    } 
} 

私はそれがあまりないです知っていると私はそれが何らかの形で動的なプログラミングを伴う可能性が知っている:

私はこれまでの各整数をループループ。

途中で私を助ける考えがある人はいますか?

+2

これを確認してくださいhttps://en.wikipedia.org/wiki/Knapsack_problem多分あなたに役立つでしょう。 – mariusz2108

答えて

0

あなたの質問の私の解釈では、あなたの最大の問題はアルゴリズム内にあります。最初にアルゴリズムを決めてから、コーディングに進むべきです。私があなたが求めていることをしたいのであれば、配列を最初に昇順または降順にソートします。多くのソートアルゴリズムがあります。しかし、あなたが目にしているのは、再帰的バイナリツリートラバーサルアルゴリズムによって解決できるサブセット合計問題です。私はあなたにコードを与えるつもりはありませんが、あなたがそれを研究する時間があれば、そのトリックを行います。