소스 검색

add 'Climbing Stairs' optimize

tangs 5 년 전
부모
커밋
0393404fdd
1개의 변경된 파일43개의 추가작업 그리고 0개의 파일을 삭제
  1. 43 0
      tags/dynamic-programming/climbingStairs/main_optimize.go

+ 43 - 0
tags/dynamic-programming/climbingStairs/main_optimize.go

@@ -0,0 +1,43 @@
+package main
+
+import "fmt"
+
+func main() {
+	var n int
+
+	n = 1
+	fmt.Println(climbStairs(n))
+
+	n = 2
+	fmt.Println(climbStairs(n))
+
+	n = 3
+	fmt.Println(climbStairs(n))
+
+	n = 4
+	fmt.Println(climbStairs(n))
+
+	n = 5
+	fmt.Println(climbStairs(n))
+
+	n = 6
+	fmt.Println(climbStairs(n))
+}
+
+// 利用动态规划来解决该问题
+func climbStairs(n int) int {
+	if n == 1 {
+		return 1
+	}
+	if n == 2 {
+		return 2
+	}
+	var dp = make([]int, n+1)
+	dp[0] = 0
+	dp[1] = 1
+	dp[2] = 2
+	for i := 3; i <= n; i++ {
+		dp[i] = dp[i-1] + dp[i-2]
+	}
+	return dp[n]
+}