[蓝桥杯]李白打酒(Python)

题目:

话说大诗人李白,一生好饮。幸好他从不开车。
一天,他提着酒壶,从家里出来,酒壶中有酒2斗。他边走边唱:
无事街上走,提壶去打酒。
逢店加一倍,遇花喝一斗。
这一路上,他一共遇到店5次,遇到花10次,已知最后一次遇到的是花,他正好把酒喝光了。
请你计算李白遇到店和花的次序,可以把遇店记为a,遇花记为b。则:babaabbabbabbbb 就是合理的次序。像这样的答案一共有多少呢?
请你计算出所有可能方案的个数(包含题目给出的)。
注意:通过浏览器提交答案。答案是个整数。不要书写任何多余的内容。

最开始想用的方法是先进行全排列,但是在运行的时候内存爆了。。然后就换了一个方法
1、理论上可以成功的代码

import itertools
result=[]
x=['1','2','3','4','5','6','7','8','a','b','c','d','e']j=list(itertools.permutations(x,13))
for i in j :alcohol=2for h in i :if h in ['a','b','c','d','e'] :alcohol*2else:alcohol-1result.append(alcohol)r=result.count(2)
print(r)

2、
递归


def count(a, b, alcohol):global resultif 0 < a:count(a-1, b, alcohol*2)if 0 < b:count(a, b-1, alcohol-1)if a == 0 and b == 0 and alcohol == 1:result += 1return resultresult = 0
print(count(5, 9, 2))

结果:14


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部