당신의 임무는 극을 페인트하는 것이고, 클라이언트는 당신에게 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 개의 노란색 섹션을 원한다고 말하면 그런 극을 그릴 방법이 없습니다. 섹션 정렬 방법에 관계없이 두 개의 빨간색 섹션이 닿아 두 개의 빨간색 섹션이 닿으면 단일 빨간색 섹션이됩니다.
그리고 그것은 극을 그리는 우리의 하나의 규칙입니다.
인접 섹션의 색상이 다를 수 있습니다
태스크
필요한 색상 및 섹션 목록이 제공되면 요청에 따라 극을 칠하는 가능한 방법의 수를 출력하십시오. 합리적인 방식으로 색상을 표현할 수 있지만 (정수, 문자, 문자열) 한 번에 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]
? 나는 그렇게 생각.