今天有同学问了一个有趣的问题:
12个座位不允许三人连坐(可以允许一人或二人连坐),那么最多可以坐多少人?
其实不难解决,应该是八人,但如果把这个问题推广到n个座位和不允许m人连坐,可能就比较麻烦了(数学dl可以帮忙求一下)
我突发奇想想检验一下最近的Python学习成果,于是就编了几行代码,最后求出来第一问是8没错
不久后加以推广
import re
n=int(input('请输入n:'))
m=int(input('请输入m:'))
M=''
for x in range(m):
M+='1'
all_number=[]
max=0
for i in reversed(range(2**n, 2**(n+1))):
b=str(bin(i))
c=''
for j in range(3,3+n):
c+= b[j]
result = re.findall(M, c)
if result == []:
result2= re.findall('1', c)
all_number.append(len(result2))
for k in all_number:
if k > max:
max = k
print('最大数为{}'.format(max))
采用倒序求数,直接得到答案,其实Python程序还在运行,但已经求出最大值了
但数据过大就不行,太多了,跑不动~
dlm有什么较好的代码吗
作业要自己做