蓝桥杯真题 Python A组 路径
生活随笔
收集整理的這篇文章主要介紹了
蓝桥杯真题 Python A组 路径
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
思路:(動態(tài)規(guī)劃)
1.由題意可知,在臺階1時(shí)步數(shù)為零,在臺階2時(shí),步數(shù)為1和2的公倍數(shù)2,所以在臺階2時(shí)步數(shù)是2,我們根據(jù)動態(tài)規(guī)劃的思想,我們設(shè)立一個列表記錄在臺階i時(shí)所需要的最小步數(shù)。
2.假想一下當(dāng)你站在臺階i時(shí)你可能是從臺階i - j 上過來的(for j in range(1,22)注意一個前提,i-j 是要大于等于0 的),所以臺階i 上最少步數(shù)為min(
[(min_step[i-j] + com(i+1,i-j+1)) for j in range(1,22) if i - j >= 0]) ,直到算出第2021個臺階的最少步數(shù)就是我們的答案了。
def com(a:int,b:int):#輸出最小公倍數(shù)i = 1max_ = max(a,b)min_ = min(a,b)while i:if (max_*i) % min_ == 0:return (max_*i)i += 1 min_step = [0,2] for i in range(2,2021):a = min([(min_step[i-j] + com(i+1,i-j+1)) for j in range(1,22) if i - j >= 0])min_step.append(a) print(min_step[2020])總結(jié)
以上是生活随笔為你收集整理的蓝桥杯真题 Python A组 路径的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 7-8 德才论 (25 分)(C语言实现
- 下一篇: Python之NumPy(axis=0