校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識(shí)庫 > 基于Go和PHP語言實(shí)現(xiàn)爬樓梯算法的思路詳解

基于Go和PHP語言實(shí)現(xiàn)爬樓梯算法的思路詳解

熱門標(biāo)簽:地圖標(biāo)注測(cè)試 廣東語音外呼系統(tǒng)供應(yīng)商 智能電銷機(jī)器人營銷 福州鐵通自動(dòng)外呼系統(tǒng) 澳門防封電銷卡 烏魯木齊人工電銷機(jī)器人系統(tǒng) 長沙ai機(jī)器人電銷 賺地圖標(biāo)注的錢犯法嗎 濮陽自動(dòng)外呼系統(tǒng)代理

爬樓梯(Climbing-Stairs)

題干:

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

這題爬樓梯算是算法題里面比較經(jīng)典的。

解題思路

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

1.動(dòng)態(tài)規(guī)劃

2.斐波那契數(shù)列

動(dòng)態(tài)規(guī)劃算是一個(gè)比較重要的解題技巧與思路,后續(xù)我會(huì)寫一系列需要用動(dòng)態(tài)規(guī)劃思路解題的文章,幫助大家更好的理解動(dòng)態(tài)規(guī)劃。

這題我們用斐波那契數(shù)列來解。

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

放到這個(gè)題目中我們可以發(fā)現(xià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 階……

綜上,我們可以發(fā)現(xiàn) n 階樓梯有 m 種爬法,且 m 符合斐波那契數(shù)列規(guī)律,所以直接上代碼咯!

Go 實(shí)現(xiàn)

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

PHP 實(shí)現(xiàn),一共兩版實(shí)現(xiàn),看自己喜歡哪種代碼吧

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){
  //遞歸加法,這個(gè)爬樓梯就是斐波拉切算法求最后f(n-1)+f(n-2)的和
  $dp[$v] = $dp[$v-1] + $dp[$v-2]; 
 }

 return $dp[$n];
}

總結(jié)

到此這篇關(guān)于基于Go和PHP語言實(shí)現(xiàn)爬樓梯算法的思路詳解的文章就介紹到這了,更多相關(guān)Go PHP 爬樓梯算法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • 詳解PHP調(diào)用Go服務(wù)的正確方式
  • goto語法在PHP中的使用教程
  • ThinkPHP5 框架引入 Go AOP,PHP AOP編程項(xiàng)目詳解
  • golang、python、php、c++、c、java、Nodejs性能對(duì)比
  • Linux安裝PHP MongoDB驅(qū)動(dòng)
  • PHP中安裝使用mongodb數(shù)據(jù)庫
  • 詳解Go語言微服務(wù)開發(fā)框架之Go chassis
  • 詳解Go與PHP的語法對(duì)比

標(biāo)簽:阿克蘇 德州 慶陽 西雙版納 廣西 貴陽 調(diào)研邀請(qǐng) 太原

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《基于Go和PHP語言實(shí)現(xiàn)爬樓梯算法的思路詳解》,本文關(guān)鍵詞  基于,和,PHP,語言,實(shí)現(xiàn),爬,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《基于Go和PHP語言實(shí)現(xiàn)爬樓梯算法的思路詳解》相關(guān)的同類信息!
  • 本頁收集關(guān)于基于Go和PHP語言實(shí)現(xiàn)爬樓梯算法的思路詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 和田市| 宁强县| 曲水县| 叶城县| 中超| 那曲县| 长治县| 鄂州市| 花垣县| 格尔木市| 乌海市| 江门市| 乐东| 独山县| 鲁甸县| 吉安市| 朝阳县| 万源市| 潼南县| 翼城县| 高淳县| 普宁市| 通河县| 吉水县| 绵阳市| 屏东县| 灵璧县| 沙洋县| 商城县| 龙川县| 上思县| 大宁县| 巫山县| 广元市| 盘锦市| 启东市| 西华县| 钦州市| 汶川县| 凌海市| 务川|