请问有人能帮我找到一个最优的动态规划算法来解决这个问题吗?
在去晚餐的路上,CCC(加拿大计算机竞赛)的参赛者们排队等候他们美味的卷曲薯条。N(1≤N≤100)名参赛者单文件排队进入自助餐厅。
Doctor V是CCC的负责人,在最后一刻意识到程序员们简直讨厌站在使用不同语言的程序员旁边排队。值得庆幸的是,CCC只允许两种语言:Gnold和Helpfile。此外,参赛者们已经决定只有在至少有K(1≤K≤6)名参赛者组成的小组中才会进入自助餐厅。
Doctor V决定按照以下方案进行迭代:
* He will find a group of K or more competitors who use the same language standing next to each other in line and send them to dinner.
* The remaining competitors will close the gap, potentially putting similar-language competitors together.
医生V已经为您记录了参赛选手的序列。所有的选手都能用餐吗?如果可以,需要发送多少个最小组参加晚宴?
输入:
第一行包含两个整数N和K。 第二行包含N个字符,这些字符是排队的竞争者的序列(H代表Helpfile,G代表Gnold)。
输出:
在一行上输出一个数字,即形成晚宴所需的最小分组数量。如果不能让所有程序员用餐,则输出-1。