CodeJam KickStart 2017--The Pancake Problem

将生产线上的面饼都翻至笑脸面

摸了一个星期的鱼…果然一放假就皮痒要懈怠…看来周末还是不能经常回家,老老实实呆学校里学习好了。

言归正传,之前谷歌办公室打电话来问我要不要试着申请一下他们的暑期实习…然后我跟着网申步骤发现…还要面试啊qaq我这个编程渣可怎么办,简历都不敢投了…但是还是翻了个小墙试着看了一下往年的题目。这大概是2017年某一个round的题…

题目大概意思就是,你有一个一次能翻连续k个薄饼的锅子,他们翻完顺序还是不变,但是只是正反面改变了。在队列头和尾处也一定要翻到k个饼,不能说将锅子的某一格不用上。完整题目如下:
在这里插入图片描述在这里插入图片描述
这道题和数学系的小伙伴一起研究了一下,据说是可以严格证明没有其他讨巧的解题算法的。那么就明确的去使用暴力解法,从第一个"-"的面饼开始翻就好了,如果翻到最后没有留下“-”面的面饼,那么就输出我们共翻了多少次,因此要准备一个counter 。如果最后一个 为“-”面,那么当我们试图用 k的锅去翻的时候,肯定就越界了,因此需要加一个判断s[i] == '-'&& i + k > s.length

思路很简单,基本上就是两个for循环慢慢检索过去,再加上一些判断。

刚开始写完的时候发现尴尬的是,因为输出那个counter的值,放在循环里面么打印好几遍,放在循环外面么,就算是结果是impossible也会输出一个不需要的counter。解决方法是当判断出是“impossible”的时候就将counter置为负数然后break

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值