あなたの仕事はポールをペイントすることであり、クライアントが4つの赤いセクションと3つの黄色のセクションでポールをペイントするように要求するとしましょう。次のように簡単に実行できます。
r y r y r y r
黄色と赤のストライプだけで。ここで、クライアントが2つの赤いセクション、2つの黄色のセクション、1つの緑のセクションでポールをペイントするように要求したとしましょう。ポールをペイントする方法はいくつかあります
g y r y r
y g r y r
y r g y r
y r y g r
y r y r g
g r y r y
r g y r y
r y g r y
r y r g y
r y r y g
y r g r y
r y g y r
より正確には、12の方法でポールをペイントします。これにより、関連するより多くの色とセクションが爆発します
クライアントが3つの赤いセクションと1つの黄色のセクションが必要だと言った場合、そのようなポールを描く方法はありません。セクションをどのように配置しようとしても、2つの赤いセクションが接触し、2つの赤いセクションが接触すると単一の赤いセクションになります。
そして、それはほとんどポールを塗るための私たちの1つのルールです
隣接するセクションは同じ色ではない場合があります
仕事
必要な色とセクションのリストを指定して、要求に応じて極をペイントする可能な方法の数を出力します。合理的な方法(整数、文字、文字列)で色を表すことができますが、一度に255を超える異なる色が与えられることはありません。希望する場合は、名前に色を割り当てず、セクションカウントのリストを取得する方が簡単な場合も選択できます。
テストケース
これらは、特に大きくなるにつれて、手で計算するのがかなり困難です。誰かが提案されたテストケースを持っている場合、私はそれを追加します。
[4,3] -> 1
[2,2,1] -> 12
[3,1] -> 0
[8,3,2] -> 0
[2,2,1,1]-> 84
[1, 1, 1, 1, 2, 2, 2]
か?そうだと思います。