基于Python和JavaScript的子串删除游戏

2020-09-14 20:32:59

子串移除游戏是Codeforce的一个800分的问题,我希望你已经仔细阅读了这个问题,并尝试过解决它。这个问题从根本上说,顾名思义,就是删除一个子字符串。

每次测试,您都会得到一个二进制字符串(0和1),您需要删除每个连续的1才能使Alice获胜。爱丽丝是谁?爱丽丝和鲍勃是这个游戏中的玩家,谁去掉了最高数字1&39;谁就是赢家。你的职责是让爱丽丝获胜,因为爱丽丝是第一个移动的。

你可以把这个问题想成是先捕获字符串中所有连续的一个,然后我们才能决定我们应该专注于哪个1';才能让Alice获胜。例如,如果输入是01111001,这意味着我们有4个连续的1;,然后只有1;要使爱丽丝在这种情况下获胜,我们应该让她走那一步,这显然是她已经走的第一步,然后鲍勃可以走第二步,也就是字符串中的最后一步。

让我们再举一个例子,111111这是6个,这可能是爱丽丝的第一步,所以6个步骤将是她的胜利。

所以一共有5个..。它们中的哪一个应该是爱丽丝的动作呢?那将是第一个,第三个和第五个。所以这里是爱丽丝的3步棋。

这里,我们有2个连续的,4个连续的,3个连续的。哪些招式可以让爱丽丝获胜?因此,我们需要考虑如何才能使移动次数尽可能高,因此,如果我们按降序对多个连续的移动进行排序,然后从最高的数字开始,这将使我们得到Alice的第一个移动,第二个移动应该是从该移动开始的第二步。因此,在本例中:[4,3,2]Alice将采取动作4和2,它们的总和为6。

这就是我是如何思考这个问题的,下面是我在Python和Javascript中的实现:

我想和大家分享这个视频,因为解决这个问题的点子就是出自这个人之手。如果您感兴趣,请查看他的C++解决方案。