Katakanlah tugas Anda adalah melukis tiang, dan klien meminta Anda melukis tiang dengan 4 bagian merah dan 3 bagian kuning. Anda dapat melakukannya dengan mudah sebagai berikut:
r y r y r y r
Hanya dengan garis-garis kuning dan merah. Sekarang katakanlah klien Anda meminta Anda untuk melukis sebuah tiang dengan 2 bagian merah, 2 bagian kuning, dan 1 bagian hijau . Ada beberapa cara Anda bisa mengecat tiang Anda
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
Lebih tepatnya itulah 12 cara untuk melukis tiang. Ini memunculkan lebih banyak warna dan bagian yang terlibat
Sekarang jika klien Anda mengatakan mereka ingin 3 bagian merah dan 1 bagian kuning tidak ada cara untuk melukis tiang seperti itu. Karena tidak peduli bagaimana Anda mencoba mengatur bagian dua bagian merah akan menyentuh, dan ketika dua bagian merah menyentuh mereka menjadi bagian merah tunggal.
Dan itu adalah aturan kami untuk mengecat tiang
Bagian yang berdekatan mungkin tidak memiliki warna yang sama
Tugas
Diberi daftar warna dan bagian yang diperlukan, output jumlah cara yang mungkin untuk melukis tiang seperti yang diminta. Anda dapat mewakili warna dengan cara yang masuk akal (bilangan bulat, karakter, string), tetapi Anda tidak akan pernah diberikan lebih dari 255 warna berbeda sekaligus. Jika mau, Anda bahkan dapat memilih untuk tidak memiliki warna yang ditetapkan nama dan hanya mengambil daftar jumlah bagian jika itu lebih mudah.
Uji Kasus
Ini agak sulit untuk dihitung dengan tangan, terutama karena semakin besar. Jika ada yang memiliki test case yang disarankan, saya akan menambahkannya.
[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]
? Saya rasa begitu.