मान लीजिए कि हमारे पास n सीढ़ियां हैं, और हम एक बार में 1 या 2 सीढ़ियां चढ़ सकते हैं। हमें एक फ़ंक्शन को परिभाषित करना होगा जो सीढ़ियों पर चढ़ने के अनूठे तरीकों की संख्या लौटाता है।
चरणों का क्रम नहीं बदला जाना चाहिए, इसलिए चरणों के प्रत्येक भिन्न क्रम को एक तरीके के रूप में गिना जाता है। यदि उत्तर बहुत बड़ा है तो परिणाम को 10^9 + 7
से संशोधित करेंइसलिए, यदि इनपुट n =5 जैसा है, तो आउटपुट 8 होगा, क्योंकि 8 अद्वितीय तरीके हैं -
- 1, 1, 1, 1, 1
- 2, 1, 1, 1
- 1, 2, 1, 1
- 1, 1, 2, 1
- 1, 1, 1, 2
- 1, 2, 2
- 2, 1, 2
- 2, 2, 1
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- dp:=आकार n+1 की एक सरणी, और 0 से भरें
- dp[1]:=1
- 2 से n+1 की श्रेणी में i के लिए, करें
- dp[i]:=dp[i-1]+dp[i-2]
- dp mod m का अंतिम तत्व लौटाएं
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
m =(10**9)+7 class Solution: def solve(self, n): dp=[0 for _ in range(n+2)] dp[1]=1 for i in range(2,n+2): dp[i]=dp[i-1]+dp[i-2] return dp[-1] % m ob = Solution() print(ob.solve(5))
इनपुट
5
आउटपुट
8