タイトル : Re^3: 組み合わせ合計検索 つづき 投稿日 : 2023/08/16(Wed) 16:27 投稿者 : 魔界の仮面弁士
> Dim 値一覧3 As Integer() = {36, 40, 45, 51, 55, 65, 69, 76, 82, 98, 106, 108, 115, 116, 118, 119, 123, 129, 133, 139, 148, 159, 163, 165, 184, 186} > 探索(1230, 値一覧3) > > For 設定値 = 設定値 To 設定値 - ★ Step -1 > > ★の値を20に設定すると Console.WriteLine("抽出できませんでした。") となり > ★の値を50に設定すると Console.WriteLine("合計値:{0} 詳細値:{1}", 結果.Sum(), String.Join(", ", 結果.Select(Function(寸法) CStr(寸法)))) でてきます。 No.12102 のロジックなんですよね? 手元の環境だと近似値ではなく 設定値:1230 合計値:1230 詳細値:36, 40, 45, 51, 55, 65, 69, 76, 82, 98, 106, 108, 115, 119, 165 というそのものズバリの結果が得られたので、★の値は無関係のはずなのですが。 > ★の値を20にした場合でも > 例えば 186+184+165+163+159+148+106+115 = 1226なので > 正常終了させたいです。 まぁ、それも回答の一つではあるのですが、 > > > サンプル 23/02/12 10:52 No.12102 についてです。 のロジックでは 36+40+45+51+55+65+69+76+82+98+106+108+118+129+148 = 1226 の方が検出されると思います。 ちなみに、その「値一覧3」を対象にする場合の組み合わせは 合計が 1226 になる組み合わせは 72,832 通り 合計が 1230 になる組み合わせは 73,221 通り になると思います。(a+b と b+a を同じ組み合わせとして扱った場合) ひとまず、★の値を 0 にして、1220〜1250 の範囲で試してみましたが、 No.12102 のコードで、下記の組み合わせを検出できています。 For n = 1220 To 1250 探索(n, 値一覧3) Next 1220 = 36+40+45+51+55+65+69+76+82+98+106+108+118+123+148 1221 = 36+40+45+51+55+65+69+76+82+98+106+108+115+116+159 1222 = 36+40+45+51+55+65+69+76+82+98+106+108+119+133+139 1223 = 36+40+45+51+55+65+69+76+82+98+106+108+115+118+159 1224 = 36+40+45+51+55+65+69+76+82+98+106+108+115+119+159 1225 = 36+40+45+51+55+65+69+76+82+98+106+108+115+116+163 1226 = 36+40+45+51+55+65+69+76+82+98+106+108+118+129+148 1227 = 36+40+45+51+55+65+69+76+82+98+106+108+115+116+165 1228 = 36+40+45+51+55+65+69+76+82+98+106+108+115+119+163 1229 = 36+40+45+51+55+65+69+76+82+98+106+108+115+118+165 1230 = 36+40+45+51+55+65+69+76+82+98+106+108+115+119+165 1231 = 36+40+45+51+55+65+69+76+82+98+106+108+116+119+165 1232 = 36+40+45+51+55+65+69+76+82+98+106+108+115+123+163 1233 = 36+40+45+51+55+65+69+76+82+98+106+108+115+139+148 1234 = 36+40+45+51+55+65+69+76+82+98+106+108+115+123+165 1235 = 36+40+45+51+55+65+69+76+82+98+106+108+116+123+165 1236 = 36+40+45+51+55+65+69+76+82+98+106+108+118+139+148 1237 = 36+40+45+51+55+65+69+76+82+98+106+108+118+123+165 1238 = 36+40+45+51+55+65+69+76+82+98+106+108+115+129+163 1239 = 36+40+45+51+55+65+69+76+82+98+106+108+116+129+163 1240 = 36+40+45+51+55+65+69+76+82+98+106+108+115+129+165 1241 = 36+40+45+51+55+65+69+76+82+98+106+108+116+129+165 1242 = 36+40+45+51+55+65+69+76+82+98+106+108+115+133+163 1243 = 36+40+45+51+55+65+69+76+82+98+106+108+116+133+163 1244 = 36+40+45+51+55+65+69+76+82+98+106+108+115+133+165 1245 = 36+40+45+51+55+65+69+76+82+98+106+108+116+133+165 1246 = 36+40+45+51+55+65+69+76+82+98+106+108+115+116+184 1247 = 36+40+45+51+55+65+69+76+82+98+106+108+118+133+165 1248 = 36+40+45+51+55+65+69+76+82+98+106+108+115+116+186 1249 = 36+40+45+51+55+65+69+76+82+98+106+108+115+119+184 1250 = 36+40+45+51+55+65+69+76+82+98+106+108+115+118+186 |