問題
あなたが階段を上っているとしましょう。建物の最上部に到達するには、nステップかかります。
毎回1〜2歩登ることができます。建物の頂上に登るには、いくつの方法が必要ですか?
例1:
入力:2
出力:2
説明:建物の最上部に登るには2つの方法があります。(1次+1次)、(2次)
例2:
入力:3
出力:3
説明:建物の最上部に登るには3つの方法があります。(1次+1次+1次)、(1次+ 2次)、(2次+ 1次)
アイデア
フィボナッチ数列を使用して解きます。
(1)まず、n = 1とn = 2の2つの例外的な階段をリストする必要があります。
(2)n≥3の場合、n番目のはしごの階段を上る方法は2つの部分で構成されます。最初の部分はn-にあります。 1のはしごを1段上って、2番目の部分のn-2のはしごを2段上る。したがって、dp [n] = dp [n-1] + dp [n-2]です。
コード
class classname(object):
def __init__(self):
pass
def climbStairs(self, n):
if n == 1:
return 1
if n == 2:
return 2
first = 1; second = 2
for i in range(n-2):
temp = second
second = first + second
first = temp
return second
if __name__ == '__main__':
s = classname()
r = s.climbStairs(35)
print(r)
関連情報
学習リンク:https://wenku.baidu.com/view/d680efcacd22bcd126fff705cc17552707225efe.htmls