मान लीजिए हमारे पास 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
- i के लिए 2 से n+1 तक की रेंज में, करें
- dp[i] := dp[i-1] + dp[i-2]
- dp के अंतिम तत्व को 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