模拟法
原题链接:饮料换购
我的理解:
其实模拟法并不是指什么算法,而是一种思维,指的是根据题目的意思来进行解答,这里用一道蓝桥杯的例题进
行举例
这道题就是典型的模拟法思维
题目告诉了我们,小明能喝到饮料的规则,模拟法思维,就是模拟题目告诉我们的规则,一点一点向答案推进,比如题目说3个瓶盖可以换一瓶饮料,那假如有10瓶饮料,那就有10个瓶盖,就可以换10整除3瓶,即3瓶饮料,那3瓶饮料又有3个瓶盖了,在加上我们10瓶饮料时,换剩下的一个瓶盖,那就是一共4个瓶盖了
继续上面的步骤,4个瓶盖就可以换一瓶饮料,那现在的瓶盖数就是换的一个饮料的瓶盖加上剩下的一个瓶盖,一共2个瓶盖,此时不足以换了,结束
而模拟法就是使用程序来模拟上面的过程,模拟这个换饮料的过程,我们只需要写好一遍换饮料(模拟)的过程,让计算机循环帮我们去换,最终得到答案
参考代码
N = int(input())
count = N # 小明最终能喝到饮料一定大于等于它买入的n瓶饮料
while N // 3: # 当无法换饮料时,程序退出
huan = N // 3 # 能换的饮料数就是当前瓶盖数整除三
count += huan
yu = N % 3 # 计算换完一次剩余的瓶盖数
N = yu + huan # 换完后的盖子数等于:换完剩余的盖子数加上换成功的饮料数
print(count) # 输出喝到的饮料
本人属于初学者,能力有限,代码以及理解仅供参考,如有不对请提出指正
原题链接:饮料换购