牛客算法竞赛入门课第一节习题Part2( Flip Game ~ 矩阵消除游戏)

牛客算法竞赛入门课第一节习题Part2( Flip Game ~ Subsequence)

Flip Game

题意:

有一个4*4的棋盘,每个格子上都有一个黑白两面的棋子。每次任意选择一个棋子,把这颗棋子和他周围的棋子都反过来。当所有的棋子是同一个颜色时,游戏结束。

问给定的初始状态能否完成游戏,若能,输出最小的反转次数。

思路:

因为是最小的翻转次数,而且我们无法确定如果翻转才是最优解,所以我们只能对每一种状态都枚举他的所有可能状态,BFS求解。

但同时难点在于如何储存当前的状态,如果用数组的话,结合队列不是很好操作。我们可以用二进制表示每个棋子的黑白状态,这样就可以用一个数tmp来表示每一种状态。

当tmp==0或是tmp==1<<16(65535)时游戏结束。

Subsequence

题意:

求一个序列的连续子序列的和>=s的最短长度。

思路:

双指针。

先求一个前缀和数组,因为是连续子序列[l,r],所以sum[r]-sum[l-1]就是该子序列元素的和。

取两个指针为l,r,初始化均为0。

先不断右移r指针使得区间和>=s,当区间和>=s时不断右移l指针,并且记录r-l的最小值。

矩阵消除游戏

思路:
因为不知道选哪一行哪一列是最优的,而且数据范围也比较友好,就可以二进制枚举选几个行,剩下的都选列。在选择的过程中肯定是选择得分最多的行。

全部评论

相关推荐

千疮百孔的象牙塔:我也在捣鼓im,你这个im好奇怪的样子,单看简历get不到点,im的消息及时性,消息可靠性,然后系统的可扩展性这几个关键问题都是怎么解决的从简历描述get不到,具体说消息怎么传,消息怎么推送,消息怎么存,消息安全怎么做的这些点感觉对应不起来
点赞 评论 收藏
分享
03-31 17:40
已编辑
门头沟学院 算法工程师
程序员牛肉:小牛肉来也! 也不要焦虑啦,你第一志愿还没有结束,只是回到人才库(泡大池子等待各个部门挑选)而已。仅仅代表你不符合这个组的用人标准,并不能够说明你在本次暑期实习中没机会加入美团了。 还是平复好心态,不断的复盘,等待下一次面试就好了。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务