最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2020年05月18日 09:33:52   作者:alpha 的博客  
這篇文章主要介紹了Go和PHP 實(shí)現(xiàn)爬樓梯算法,本文通過動(dòng)態(tài)規(guī)劃和斐波那契數(shù)列兩種解決思路給大家講解的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

爬樓梯(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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Go語言實(shí)現(xiàn)自動(dòng)填寫古詩詞實(shí)例代碼

    Go語言實(shí)現(xiàn)自動(dòng)填寫古詩詞實(shí)例代碼

    這篇文章主要給大家介紹了關(guān)于Go語言實(shí)現(xiàn)自動(dòng)填寫古詩詞的相關(guān)資料,這是最近在項(xiàng)目中遇到的一個(gè)需求,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-03-03
  • Go語言類型轉(zhuǎn)換及問題探討

    Go語言類型轉(zhuǎn)換及問題探討

    本文探討了Go語言中的類型轉(zhuǎn)換機(jī)制,特別是在使用atomic.Pointer和unsafe時(shí)可能引發(fā)的問題,通過深入分析Go語言的類型轉(zhuǎn)換規(guī)則,如數(shù)值類型間轉(zhuǎn)換、字符串與byte/rune切片轉(zhuǎn)換、slice與數(shù)組轉(zhuǎn)換,以及底層類型相同時(shí)的轉(zhuǎn)換,文章最后給出了一些在Go中使用類型轉(zhuǎn)換的建議
    2024-10-10
  • Go語言中使用gorm小結(jié)

    Go語言中使用gorm小結(jié)

    這篇文章主要給大家介紹了Go語言中如何使用gorm,文中介紹的很詳細(xì),有需要的朋友們可以參考借鑒,下面來一起看看吧。
    2016-12-12
  • Golang?Makefile示例深入講解使用

    Golang?Makefile示例深入講解使用

    一次偶然的機(jī)會(huì),在?github?上看到有人用?Makefile,就嘗試了一下,發(fā)現(xiàn)真的非常合適,Makefile?本身就是用來描述依賴的,可讀性非常好,而且與強(qiáng)大的?shell?結(jié)合在一起,基本可以實(shí)現(xiàn)任何想要的功能
    2023-01-01
  • Go語言fmt模塊的完整方法詳解及示例代碼

    Go語言fmt模塊的完整方法詳解及示例代碼

    這篇文章主要介紹了Go語言fmt模塊使用的相關(guān)資料,fmt庫最基本的功能之一就是格式化輸出,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-03-03
  • golang調(diào)用c實(shí)現(xiàn)的dll接口細(xì)節(jié)分享

    golang調(diào)用c實(shí)現(xiàn)的dll接口細(xì)節(jié)分享

    這篇文章主要介紹了golang調(diào)用c實(shí)現(xiàn)的dll接口細(xì)節(jié)分享,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-05-05
  • 詳解如何使用Go模塊進(jìn)行依賴管理

    詳解如何使用Go模塊進(jìn)行依賴管理

    本文將介紹Go語言中的模塊(module)概念,以及如何使用Go模塊進(jìn)行依賴管理,我們會(huì)探討模塊的基本概念、使用方法、配置和依賴關(guān)系管理等方面的內(nèi)容,需要的朋友可以參考下
    2023-10-10
  • golang 通用Contains方法分享

    golang 通用Contains方法分享

    這篇文章主要介紹了golang 通用Contains方法分享,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • Go語言學(xué)習(xí)筆記之錯(cuò)誤和異常詳解

    Go語言學(xué)習(xí)筆記之錯(cuò)誤和異常詳解

    Go語言采用返回值的形式來返回錯(cuò)誤,這一機(jī)制既可以讓開發(fā)者真正理解錯(cuò)誤處理的含義,也可以大大降低程序的復(fù)雜度,下面這篇文章主要給大家介紹了關(guān)于Go語言學(xué)習(xí)筆記之錯(cuò)誤和異常的相關(guān)資料,需要的朋友可以參考下
    2022-07-07
  • Go 中燒腦的接口及空接口

    Go 中燒腦的接口及空接口

    在Go語言的實(shí)際編程中,幾乎所有的數(shù)據(jù)結(jié)構(gòu)都圍繞接口展開,接口是Go語言中所有數(shù)據(jù)結(jié)構(gòu)的核心,這篇文章主要介紹了Go 中燒腦的接口,需要的朋友可以參考下
    2024-02-02

最新評論

宁都县| 安塞县| 本溪市| 乐清市| 江永县| 理塘县| 巴南区| 泸溪县| 滁州市| 颍上县| 肥乡县| 甘洛县| 鄱阳县| 上虞市| 图片| 澄江县| 蒙山县| 新民市| 合水县| 金阳县| 左云县| 资兴市| 景东| 新乡市| 木里| 福鼎市| 鸡泽县| 连城县| 洛扎县| 宿松县| 西吉县| 巨野县| 安康市| 龙游县| 内乡县| 会泽县| 兴仁县| 沙河市| 嫩江县| 商河县| 临夏市|