39階梯走法
小明剛剛看完電影《第39級臺階》。離開電影院的時候,他數了數禮堂前的臺階數,恰好是39級!
站在臺階前,他突然又想著一個問題:
如果我每一步只能邁上1個或2個臺階。先邁左腳,然後左右交替,最後一步是邁右腳,也就是說一共要走偶數步。那麼,上完39級臺階,有多少種不同的上法呢?
請你利用計算機的優勢,幫助小明尋找答案。
解析:首先,分析題目要求,每一步只能邁1/2個臺階;最後一步必須是右腳(即步數為偶數);
假設最後一步恰好到達39級臺階,則前一步所處的位置是38/37級臺階,此時的步數為奇數。
根據要求寫出初步的框架,
由此得出, n級臺階 f(n) 剩餘臺階數 所走步數
當n==1時, f(n-1) 1 step%2==1
當n==2時, f(n-2) 1 step%2==1
然後,正向推導,
當n==1級 走法有0種
當n==2級 走法有1種(1+1)
當n==3級 走法有2種(1+2/2+1)
當n==4級 走法有2種(1+1+1+1/2+2)
......
當n==37級 走法有f(n-2)+1種 剩餘2級臺階 return step%2;//只保留奇數步的結果,保證最後一步是右腳
當n==38級 走法有f(n-1)+1種 剩餘1級臺階 return 1;
主碼:
public class test {
// 奇數步
static long g(int n)
{
if(n==0) return 0;
if(n==1) return 1;
//if(n==2) return 1;
return f(n-1) + f(n-2);
}
// 偶數步
static long f(int n)
{
if(n==0) return 1;
if(n==1) return 0;
//if(n==2) return 1;
return g(n-1) + g(n-2);
}
public static void main(String[] args) {
System.out.println(f(5));
System.out.println(f(39));
}
}
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4662/viewspace-2801384/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 藍橋杯 (java) 第39級階梯Java
- (39/60)DP基礎、斐波那契數、爬樓梯、用最小花費爬樓梯
- 思考工具之推理階梯 | Untools
- 階梯訪問表優化優化
- echarts 堆疊面積階梯圖Echarts
- UE 設定高精度DEM的方法(UE中地形呈階梯狀的解決辦法)
- 習題2-2 階梯電價 (15分)
- SAP MM 採購價格裡的階梯價格
- 實驗2-2-8 階梯電價 (15分)
- Python演算法:如何解決樓梯臺階問題Python演算法
- keycloak~Refresh_token階段不走RequiredActionUI
- Typescript 高階語法進階TypeScript
- 39
- 步梯
- 社群Task挑戰賽開啟,階梯式任務等你來戰
- 【ybt高效進階1-5-1】走迷宮
- 後出海時代:“陡坡式增長”失速,“階梯式增長”到來
- 讀懂深度學習,走進“深度學習+”階段深度學習
- 程式設計師職業發展之路思考:工程師的等級階梯程式設計師工程師
- 不管是青蛙跳臺階還是who爬樓梯,能上去就行
- Edu39
- vue39Vue
- SQL 高階語法 MERGE INTOSQL
- 電梯演講
- 1416電梯升降
- 技術管理進階——管理者如何進行梯隊設計及建設
- RabbitMQ 延遲佇列實現訂單支付結果非同步階梯性通知MQ佇列非同步
- aardio教程二) 進階語法
- Hive語法及其進階(二)Hive
- Java高階語法之反射Java反射
- PHP高階語法總結PHP
- Leetcode 39 Combination SumLeetCode
- iOS進階之路 (三)OC物件的原理 - isa 結構 & 走位iOS物件
- leetcode 70 爬樓梯LeetCode
- 70. 爬樓梯
- Google高階搜尋技巧之高階語法查詢指令Go
- 樓梯有n個臺階,上樓可以一步上1階,也可以一步上兩階。一共有多少種上樓的方法?
- 官方帶隊實測,階梯式解鎖飛槳框架3.0能力新特性,輕鬆上手!框架