91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

基于Go和PHP語言如何實現爬樓梯算法

發布時間:2020-07-23 16:36:06 來源:億速云 閱讀:171 作者:小豬 欄目:編程語言

這篇文章主要為大家展示了基于Go和PHP語言如何實現爬樓梯算法,內容簡而易懂,希望大家可以學習一下,學習完之后肯定會有收獲的,下面讓小編帶大家一起來看看吧。

爬樓梯(Climbing-Stairs)

題干:

假設你正在爬樓梯。需要 n 階你才能到達樓頂。每次你可以爬 1 或 2 個臺階。你有多少種不同的方法可以爬到樓頂呢?注意:給定 n 是一個正整數。示例 1:  輸入: 2  輸出: 2  解釋: 有兩種方法可以爬到樓頂。  1. 1 階 + 1 階  2. 2 階示例 2:  輸入: 3  輸出: 3  解釋: 有三種方法可以爬到樓頂。  1. 1 階 + 1 階 + 1 階  2. 1 階 + 2 階  3. 2 階 + 1 階來源:力扣

這題爬樓梯算是算法題里面比較經典的。

解題思路

這題的解題思路主要有兩種:

1.動態規劃

2.斐波那契數列

動態規劃算是一個比較重要的解題技巧與思路,后續我會寫一系列需要用動態規劃思路解題的文章,幫助大家更好的理解動態規劃。

這題我們用斐波那契數列來解。

斐波那契數列又稱兔子數列,指得是:1、1、2、3、5、8、13、21、……,在數學上它得遞推公式是:F(1)=1,F(2)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 3,n ∈ N*)。

放到這個題目中我們可以發現:二階樓梯的走法有 2種: 1 階 + 1 階 、 2 階三階樓梯的走法有 3種:1 階 + 1 階、1 階 + 2 階、2 階 + 1 階四階樓梯的走法有 5種:1 階 + 1 階 + 1 階 + 1 階、1 階 + 2 階 + 1 階、1 階 + 1 階 + 2 階、2 階 + 2 階、2 階 + 1 階 + 1 階……

綜上,我們可以發現 n 階樓梯有 m 種爬法,且 m 符合斐波那契數列規律,所以直接上代碼咯!

Go 實現

// 斐波那契數列
// 1 1 2 3 5 8 13 ....
func climbStairs2(n int) int {
 // 1 階臺階直接返回 1
 if n == 1 {
  return 1
 }
 // 2 階臺階直接返回 2
 if n == 2 {
  return 2
 }
 current := 2
 pre := 1
 // 當前臺階的走法是前兩個臺階走法之和
 for i := 3; i <= n;i ++ {
  current = current + pre
  pre = current - pre
 }
 return current
}

PHP 實現,一共兩版實現,看自己喜歡哪種代碼吧

function climbStairs($n) {
 // if($n==1) return 1;
 // $dp[1]=1;
 // $dp[2]=2;
 // for($i=3;$i<=$n;$i++){
 //  $dp[$i]=$dp[$i-1]+$dp[$i-2];
 // }
 // 
 // return $dp[$n];

 if($n <= 2) return $n;
 $dp = [1 => 1,2 => 2];
 foreach(range(3,$n+1) as $v){
  //遞歸加法,這個爬樓梯就是斐波拉切算法求最后f(n-1)+f(n-2)的和
  $dp[$v] = $dp[$v-1] + $dp[$v-2]; 
 }

 return $dp[$n];
}

以上就是關于基于Go和PHP語言如何實現爬樓梯算法的內容,如果你們有學習到知識或者技能,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

西宁市| 额济纳旗| 吉安县| 西畴县| 竹山县| 荣昌县| 石屏县| 澄江县| 德庆县| 阿巴嘎旗| 常熟市| 蓬安县| 中西区| 乐业县| 迁安市| 丰都县| 武山县| 通榆县| 鄢陵县| 建始县| 滨州市| 武平县| 聊城市| 新昌县| 永年县| 阿克陶县| 旬邑县| 邹城市| 广饶县| 葫芦岛市| 朔州市| 固原市| 万安县| 阳曲县| 冷水江市| 长春市| 甘谷县| 绥芬河市| 离岛区| 泗水县| 梅州市|