该解决方案是如何实现的?最长的子序列

时间:2011-11-12 19:44:58

标签: algorithm

所以我正在做一些算法解决问题和第一个问题输入/输出测试用例我无法理解。我不是在问这里有任何算法或代码,我只是想了解Bob是如何获胜的?

  

Alice和Bob玩下面的游戏:

     

1)他们选择开头的前N个数字的排列。

     

2)他们交替上场,而爱丽丝则先上场。

     

3)在一个回合中,他们可以删除任何剩余的数字   排列。

     

4)当剩余数字增加时,游戏结束   序列。最后一个回合的人(之后是   序列变得越来越有竞争力。

     

假设两者都以最佳方式进行比赛,谁赢了比赛?


测试用例 5 3 2 1 4

现在他们说鲍勃会赢得比赛。 怎么样?

alice -> remove 5
bob -> remove 3
alice -> remove 1/2 -> Wins

OR

alice -> remove 3
bob -> remove 5
alice -> remove 1/2 -> Wins

2 个答案:

答案 0 :(得分:3)

alice -> remove 5
bob -> remove 4
alice -> remove 1/2/3
bob -> remove any remaining -> Wins

答案 1 :(得分:0)

最接近的结尾(移动最少)是3 4,2 4和1 4.在这种情况下,Alice获胜。所以鲍勃必须阻止这一点。最简单的方法是删除4.所以基本上这就是鲍勃的战略,这足以赢得胜利。

Alice的策略是将这两个数字保留在棋盘上,所以她将从5开始。之后,我们知道,Bob会删除4,Alice会选择任何数字,因为她总是输掉。