アプリ版:「スタンプのみでお礼する」機能のリリースについて

自動計算のロジックで悩んでます。
アドバイス下さい。
入れる数が18
これを6つの箱に入れます。
入れ方はそれぞれの箱に18を入れる全ての組み合わせ
18を分解して入れていきます。
17、1の組み合わせのパターン
16、2の組み合わせのパターン
16、1、1の組み合わせのパターン
、、、、
と全ての組み合わせを行います。
入れる6個の箱にはそれぞれ重みを設定できます。
重みは10通りあり、重みを入力して最大になるものを出力します。
※重みとはかける値のこと。
例Aの箱におもみを2つ設定できるとして重み2と5
①Aの箱の重みが2なら18×2が答えです。
②Aの箱の重みが2なら18×5が答えです。
①+②=これがAの箱に18個入れたときの解
Bの箱、Cの箱、、、と計算して最大になる入れ方を求めます。


計算ロジックで考えたのが下記です。
1.規定値を入れる組み合わせを計算する
 コンビネーション?
2.規定値から1を引いて引いた方の数を分解して分解パターン全てを計算する
 パーミッション?
3.重みの10個分1.2の計算パターンの10個の組み合わせを全て縦に計算して最大になるのを調べて表示する


小学生的な問題にすると
10個の店があり、店にはそれぞれ6個の箱があります。店ごとの箱はそれぞれ値段が違います。 
リンゴをそれぞれの箱に次の数ずついれてください。
(18.18.31.36.36.18.18.54.54.36.72)
全店舗通して最大の販売額になるリンゴの入れ方はどうなりますか?


エクセル表の場合縦に店舗10、横に6、セルに重みをそれぞれの全てのセルに乱数を設定します。
数字をいれて全ての合計が最大になるのはどの組み合わせの数字ですか?

なんか、販売計算とかに使いそうなものですがなんか、パット計算が思い付きません。
計算方式の名称とかでいいので、何かありませんか?

質問者からの補足コメント

  • エクセルで表すと
    当てはめる最大値.6つの箱※一列目のみ値いれてます
    計|A|B|C|D|E|F|
    18|0|0|0|0|0|0|
    18|||||||
    31|||||||
    36|||||||
    36|||||||
    18|||||||
    18|||||||
    54|||||||
    54|||||||
    36|||||||
    72|||||||

    ※重みは列と箱で全て違う数字固定
    例として下記を代入一列目
    計|A|B|C|D|E|F|
    18|16|1|1|0|0|0|
    二列目
    計|A|B|C|D|E|F|
    18|18|0|0|0|0|0|
    一列目の重み計算 16×5+1×3+1×10
    二列目の重み計算 18×6
    この合計は一列目と二列目の計算値の加算
    201
    の最大値がとりあえず最大になる値をだしたい。
    最終的にはそれぞれの箱ごとに最大値になる計算になる当てはめる数字の組合せを出力したいです

      補足日時:2021/11/02 07:44
  • つまり、コンビネーションの実値に重みをかけて加算して分解しつつコンビネーション、パーミテーションを規定値から引き算していって全組み合わせをもとめて計算値をそれぞれ出して
    それを、列の組み合わせをそれぞれ組み合わせパターン全てもとめて、ループして結果をみるって
    これ、プログラムじゃん。
    なんか、統計学で最大の利益計算をだす方法とかありそうだな。

      補足日時:2021/11/02 10:20

A 回答 (1件)

「なにをしたいのか」がはっきりしない.



たとえば「例Aの箱におもみを2つ設定できるとして重み2と5」のあとの計算でなにをしているのかがわからない. 「②Aの箱の重みが2なら18×5が答えです。」ってどういう意味? そして, そこに書いてある「①+②=これがAの箱に18個入れたときの解」が本当でかつ「Bの箱、Cの箱、、、と計算して最大になる入れ方を求めます。」というなら単に「重み (の総和) が最大の箱に全部入れる」だけでいい.

と書いてあるかと思うと「小学生的な問題にすると」以降で全然違う話になっている. しかも「(18.18.31.36.36.18.18.54.54.36.72)」の数字の意味がわからない. 「それぞれの箱に次の数ずついれてください。」とは書いてあるんだけど「10個の店があり、店にはそれぞれ6個の箱があります。」とそれらの数字にはどんな関連があるの?
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!