可以说您的工作是给杆子上漆,客户要求您给杆子涂上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
更确切地说,多数民众赞成在十二种方法来画杆。这会炸掉涉及的更多颜色和部分
现在,如果您的客户说他们想要3个红色的部分和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]
吗?我想是这样。