Bunu çözen bir fonksiyon yazın: Bir merdiven çıkıyorsunuz. Zirveye ulaşmak için n adım gerekir. Her seferinde 1 veya 2 basamak çıkabilirsiniz. Zirveye kaç farklı şekilde tırmanabilirsiniz?
İşte dinamik programlama kullanarak sorunu çözen fonksiyon: ``` def tırmanış Merdivenleri(n: int) -> int: if n == 1: dönüş 1 dp = [0] * (n+1) dp[1] = 1 dp[2] = 2 for i in range(3, n+1): dp[i] = dp[i-1] + dp[i-2] return dp[n] ``` İşlev bir tamsayı alır ` n`, merdivendeki basamak sayısını temsil eden girdi olarak. Zirveye tırmanmanın farklı yollarının sayısını döndürür. İşlev, sorunu çözmek için dinamik programlamayı kullanır. Tüm değerleri 0'a ayarlı olarak 'n+1' uzunluğunda bir 'dp' dizisini başlatır. Ardından, bir adıma tırmanmanın yalnızca bir yolu olduğundan, 'dp[1]'i 1'e ayarlar. İki basamağı tırmanmanın iki yolu olduğundan (aynı anda iki basamağı çıkarak veya bir basamağı iki kez çıkarak) `dp[2]` değerini 2 olarak ayarlar. İşlev daha sonra "dp"nin kalan değerlerini doldurmak için bir döngü kullanır. 3'ten "n"ye kadar her "i" değeri için "dp[i]"yi "dp[i-1]" ve "dp[i-2]"nin toplamı olarak hesaplar. Bunun nedeni, "i"-inci adıma "i-1"-inci adımdan bir basamak çıkarak veya "i-2"-inci adımdan iki basamak çıkarak ulaşabilmenizdir. Son olarak işlev, tepeye tırmanmanın farklı yollarının sayısı olan "dp[n]" değerini döndürür.