小编在知乎上看到的一道题,拿来分享给大家:
一副扑克牌中抽出13张从a到k然后把上面的一张抽出来放最低下,第二张是1拿出来摆桌上,再把最上面的一张抽出来放底下,第二张是2放桌上。以此类推把他们按照顺序都抽出来,怎么摆?
轮子哥直接表示很简单。直接把一副1..n的牌那样玩一遍,他的结果就是索引值,然后把桌子上的牌堆按照索引值排个序(这里是O(n)),就得到原来的结果了。我觉得思路应该1秒钟给出来,写代码检查一下可能需要10分钟。
然后就有网友说:题目暗示性很强啊,不太容易想到巨硬老哥的做法,强!
然后有一名网友发表了自己解答这道题目的过程及代码(代码放在文尾),同是他还觉得逆向的方法倒是挺简单。
看到这些大神都在讨论这套题,这些小伙伴都一脸懵,异口同声的说道:看了半天没看懂题目是啥意思,谁能解释下?
同是也有人问:这时NOIP(全国青少年信息学奥林匹克联赛)难度级别的题目?
Python:
def MiTest2(n):
result = []
for i in range(n):
result = result[-1:] + result[:-1]
result = [(n-i)] + result
print(result)
对于轮子哥和这位网友不同的解决方法,大伙有什么跟好的方案吗?欢迎在下方评论区吐槽!
网友评论