Last active
September 6, 2019 12:16
-
-
Save santhalakshminarayana/663fadfe5a7c0932229688a7a787d8d2 to your computer and use it in GitHub Desktop.
There exists a staircase with N steps, and you can climb up either 1 or 2 steps at a time. Given N, write a function that returns the number of unique ways you can climb the staircase. The order of the steps matters.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
''' | |
For example, if N is 4, then there are 5 unique ways: | |
1, 1, 1, 1 | |
2, 1, 1 | |
1, 2, 1 | |
1, 1, 2 | |
2, 2 | |
''' | |
''' | |
Condition: | |
--------- | |
What if, instead of being able to climb 1 or 2 steps at a time, | |
you could climb any number from a set of positive integers X? | |
For example, if X = {1, 3, 5}, you could climb 1, 3, or 5 steps at a time. | |
''' | |
def climbStairs(n,steps): | |
''' | |
Input: | |
------ | |
n(int):target step | |
steps(list):steps at a time | |
''' | |
climb_stairs=[0]*(n+1) | |
climb_stairs[0]=1 | |
for i in steps: | |
if i<=n: | |
climb_stairs[i]=1 | |
for i in range(1,n+1): | |
for step in steps: | |
if step+i <= n: | |
climb_stairs[i+step]+=climb_stairs[i] | |
return climb_stairs[n] | |
''' | |
Input: | |
n=45 | |
steps=[1,3,5] | |
Output: | |
339200673 | |
''' |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment