Hãy nói rằng công việc của bạn là sơn cột, và một khách hàng yêu cầu bạn vẽ một cây cột với 4 phần màu đỏ và 3 phần màu vàng. Bạn có thể làm điều đó khá dễ dàng như sau:
r y r y r y r
Chỉ với sọc vàng và đỏ. Bây giờ, giả sử khách hàng của bạn yêu cầu bạn vẽ một cây cột với 2 phần màu đỏ, 2 phần màu vàng và 1 phần màu xanh lá cây . Có một số cách bạn có thể vẽ cực của bạn
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
Chính xác hơn đó là 12 cách để vẽ cột. Điều này thổi lên nhiều màu sắc và các phần có liên quan
Bây giờ nếu khách hàng của bạn nói rằng họ muốn 3 phần màu đỏ và 1 phần màu vàng thì không có cách nào để vẽ một cây sào như thế. Bởi vì bất kể bạn cố gắng sắp xếp các phần như thế nào, hai phần màu đỏ sẽ chạm vào nhau và khi hai phần màu đỏ chạm vào chúng sẽ trở thành một phần màu đỏ duy nhất.
Và đó là khá nhiều quy tắc của chúng tôi để vẽ cực
Các phần liền kề có thể không cùng màu
Bài tập
Đưa ra một danh sách các màu sắc và các phần cần thiết, xuất ra số cách có thể để vẽ một cột theo yêu cầu. Bạn có thể biểu diễn màu sắc theo bất kỳ cách hợp lý nào (số nguyên, ký tự, chuỗi), nhưng bạn sẽ không bao giờ được cung cấp nhiều hơn 255 màu khác nhau cùng một lúc. Nếu bạn muốn, bạn thậm chí có thể chọn không có màu được gán tên và chỉ cần lấy một danh sách đếm phần nếu điều đó dễ dàng hơn.
Các trường hợp thử nghiệm
Đây là khá khó để tính toán bằng tay, đặc biệt là khi chúng lớn hơn. Nếu bất cứ ai có một trường hợp thử nghiệm đề nghị tôi sẽ thêm nó.
[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]
? Tôi cho là như vậy.