C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: 合計したら特定の数になるのがあるか


(過去ログ 137 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■80852 / inTopicNo.1)  合計したら特定の数になるのがあるか
  
□投稿者/ a (1回)-(2016/08/14(Sun) 23:02:40)

分類:[C#] 

C#で、
int[] a = { 1, 2, 3, 4, 5};
この中から何個か足して合計が10になる数字を探すには、
どうすればいいのでしょうか?
よろしくお願いします。
引用返信 編集キー/
■80853 / inTopicNo.2)  Re[1]: 合計したら特定の数になるのがあるか
□投稿者/ King (11回)-(2016/08/15(Mon) 10:42:06)
要素数1〜5毎に組合せを取得して合計をチェック。
引用返信 編集キー/
■80854 / inTopicNo.3)  Re[1]: 合計したら特定の数になるのがあるか
□投稿者/ shu (904回)-(2016/08/15(Mon) 11:37:02)
No80852 (a さん) に返信
> C#で、
> int[] a = { 1, 2, 3, 4, 5};
> この中から何個か足して合計が10になる数字を探すには、
> どうすればいいのでしょうか?
> よろしくお願いします。

aの要素を組み合わせて足した値は1〜15まですべて表現できるので
タイトルの内容をチェックするなら 1≦調べる値≦15で OKです。
10になる組み合わせを調べるなら
すべての要素に対し0または1を掛け足した結果が調べる値になるか
スキャンすればよいです。
引用返信 編集キー/
■80855 / inTopicNo.4)  Re[1]: 合計したら特定の数になるのがあるか
□投稿者/ 魔界の仮面弁士 (819回)-(2016/08/15(Mon) 11:50:07)
No80852 (a さん) に返信
> int[] a = { 1, 2, 3, 4, 5};
> この中から何個か足して合計が10になる数字を探すには、

int[] a = { 1, 2, 3, 4, 5 };
int total = 10;

var result = Enumerable.Range(1, ((int)Math.Pow(2, a.Length)) - 1).Select(bit => a.Where((v, idx) => ((bit >> idx) & 1) != 0).ToArray()).Where(r => r.Sum() == total).ToArray();
引用返信 編集キー/
■80862 / inTopicNo.5)  Re[2]: 合計したら特定の数になるのがあるか
□投稿者/ a (2回)-(2016/08/15(Mon) 19:05:36)
ありがとうございます。
無事解決しました
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -