たとえば、3 つの要素を持つサブマルチセットの数を知りたいようです。これを計算するのは非常に難しく、すぐに難しくなります。アイデアは、そこにたどり着く方法のすべての組み合わせを合計したいということです。したがって、重複要素なしでそれを行う C(3,4) = 4 つの方法があります。B は、C(1,3) = 3 つの方法で 2 回繰り返すことができます。B は 1 つの方法で 3 回繰り返すことができます。また、C は C(1,3) = 3 つの方法で 2 回繰り返すことができます。合計11個。(あなたが手に入れた10は間違っていました。ごめんなさい。)
一般に、そのロジックを実行しようとするのは難しすぎます。それを追跡するより簡単な方法は、係数が必要な項を持ち、それを乗算する多項式を書き出すことです。パスカルの三角形の場合、これは簡単です。多項式は (1+x)^n です。(これをより効率的に計算するには、繰り返し二乗を使用できます。)あなたの場合、要素が2回繰り返される場合、(1 + x + x ^ 2)係数が得られます。3 回は (1+x+x^2+x^3) になります。したがって、特定の問題は次のように解決されます。
(1 + x) (1 + x + x^2 + x^3) (1 + x + x^2) (1 + x)
= (1 + 2x + 2x^2 + 2x^3 + x^4)(1 + 2x + 2x^2 + x^3)
= 1 + 2x + 2x^2 + x^3 +
2x + 4x^2 + 4x^3 + 2x^4 +
2x^2 + 4x^3 + 4x^4 + 2x^5 +
2x^3 + 4x^4 + 4x^5 + 2x^6 +
x^4 + 2x^5 + 2x^6 + x^7
= 1 + 4x + 8x^2 + 11x^3 + 11x^4 + 8x^5 + 4x^6 + x^7
これらの数値をコードで生成したい場合は、多項式のトリックを使用して思考とコードを整理します。(係数の配列を操作することになります。)