2012-03-09 16 views
-1

配列が[1,2,5,7,10,13,17,21]で、合計が31に等しい5つの数を見つけなければならないとします。アルゴリズム?与えられた和に等しい配列要素を見つける

+5

オム:このような何かは(MATLABで書かれていますが、それはかなり簡単に任意の言語に翻訳します)に働くだろう。ナップザック問題。 NP完結。 –

+1

これは質問ですか?最初に何を試してみましたか。 – Rakesh

+0

効率性を気にしない場合は、多分、それを強制的に強制するのでしょうか? – Daniel

答えて

1

あなたのような小さな配列の場合、効率はあまり意味がありません。トリックは速くすることです。

array=[1, 2, 5, 7, 10, 13, 17, 21]; 
sum_val=31; 

for a=1:(length(array)-4] 
for b=(a+1):(length(array)-3) 
for c=(b+1):(length(array)-2) 
for d=(c+1):(length(array)-1) 
for e=(d+1):(length(array)-0) 
if array(a)+array(b)+array(c)+array(d)+array(e)=sum_val 
fprintf("%i+%i+%i+%i+%i=%i",array(a),array(b),array(c),array(d),array(e),sum_val); 
end 
end 
end 
end 
end 
+0

ありがとうPearsonartphoto、実際にはその小さな配列は例を与えるだけでした::) – DarkKnight

+0

@DarkKnight:私は多くを考えました...あなたがsum_valueを超えている場合、次のループなどにスキップします。しかし、それはスタートです。 – PearsonArtPhoto

+1

@Pearsonartphoto:(+ 1)解決策ではなく、あなたの写真のため...;)...恐ろしい写真.. :) –

関連する問題