2016-05-21 7 views
-1

この質問の内容を理解するのは苦労します。私はコードを要求していない、私はちょうどこの問題が何を求めているのか、それを攻撃する方法についての説明が欲しい。正の整数のソートされた配列が与えられた場合、配列の要素のサブセットがxに足りないように、xが1以上の最小の整数値を見つけます。配列は非降順でソートされ、重複を含むことができます。たとえば、入力{1,1,1,1,2}の出力7、入力{3,4,5}の出力1、入力{1,3,9 }出力2.要素のサブセットが存在しないように最小の整数値1を見つけます。

答えて

0

よく入力してみましょう。(1,1,1,1,2)私は1を取ることにしましょう。数字は1より小さく、出力ではありません。次の数字を入力しましょう。 1.iはすでにそれをチェックして、前のものに追加しようとします。結果は2です。出力は1にすることができますか?いいえ、私たちはそれ以前に言いました。入力からの次の要素は1です。それを前の要素に追加すると、2が得られます。それを入力の最初の要素に追加します。しかし、3より小さく0より大きい数字は出力できません。入力の次の数字は1です。それは類推です。次の入力番号は2です。以前の結果と再帰的に合計すると、合計6になります。次に、7は入力配列の要素を合計することで得られない最小の数です。あなたが入力のsumany数とそれらの任意の数を結びつけて紙に書いてそれをソートすれば、結果リストにない最小のxを見つけようとします。

0

簡単な問題。あなたは、基本的基準はXが配列または含まれている数字のいずれかの合計内数字にすることはできませんということでX用のすべての配列値の1と合計+ 1

[1, 1, 1, 1, 2] > sum = 6 
[3, 4, 5] > sum = 12 
[1, 3, 9] > sum = 13 

の間にある番号を解決しています配列内にあります。この問題を説明するための


最も簡単な方法は次のとおりである:「配列の数を考えると、最小の数ませはあなた配列内にどのような含まれているわけではありません添加することによって作ります。 "


最初の配列をとります。配列の値を指定すると、配列の任意の数またはすべての数を加算することで、1,2,3,4,5,6という数字を得ることはできますが、7はできません。

2番目の配列をとります。 1は出力です。数字3,7,8,9を得ることができます。これは簡単です。配列の最小の数は1より大きいため、答えは1です。

3番目の配列を取ってください。 2あなたは数字1、3、4、10、12、13 1と3 exist..butない2.


を得ることができますので、たぶん良いアルゴリズムはのソートセットを作成で構成されて出力されますすべての可能な総和、任意の整数の配列問題の答えは、セットの最初の数字が1より大きい場合、またはセット[n] + 1のセット[n] = 1の場合は1、

+0

最後の部分を除いて、良いアルゴリズムは、整数の任意の配列を与えられたすべての可能な総和のソートされた集合を作成することから成り立つ。問題の答えは、集合の最初の数が1より大きい場合には1、集合[n] ] = 1」となる。また、私はそれを解決する必要がありますO(n)、任意のアイデアをどのようにそれについて行く? – restores

関連する問題