topcoder中有一个问题,下面给出了它。我只看了一眼源代码,但我什么都不懂。有人可以帮助我获得这个问题背后的数学背景或公式吗? 。
我被要求使用三种颜色设计10个垂直条纹标志:蓝色,橙色,黄色。
我被要求不要有两个相同颜色的相邻条纹(带有两条蓝色条纹的双条纹标志看起来与单条纹蓝色条纹完全相同)。我还被要求不要彼此相邻的黄色和橙色条纹,因为它看起来不太好。
我的目标是尽量减少需要使用的条纹数量。所以,
我可以制作3种不同的单条旗。
我可以制作4种不同的双条纹旗帜:
我可以制作6种不同的三条纹旗帜:
也就是说,我最多可以使用3个条纹制作13个不同的标志。
您的任务是,给定标志数量,numFlags和禁止描述可能彼此不相邻的颜色的String [],返回最少使用的条带数,以便最多使用给定数量的不同标志那条纹。
更详细:
禁止使用String []以下列方式构建:
1. the colors will be indexed from 0
2. i-th element of forbidden will be the indices of colors that are not allowed to be neighbors of the i-th color
3. each element of forbidden will be a single-space delimited list of numbers without trailing/leading spaces
4. each element of forbidden will have numbers without leading zeroes in increasing order
5. each color will be in the list of forbidden colors of itself
6. rules for forbidden colors are symmetric: if the i-th color can't be a neighbor of the j-th color, then the j-th color can't be a neighbor of the i-th color
at least one pair of neighbors will not be forbidden (if all possible pairs are forbidden, then you can only make one-striped flags)
答案 0 :(得分:0)
@Herokiller
问题的限制