解題思路:
我們先定義dp[i]表示青蛙跳到i級台階的跳法數,然後我們想到青蛙到達n級台階的跳法有兩種,一種是跳過一級台階就跳到,一種是跳過2級台階跳到,故關係表示式為:dp[i] = dp[i-1]+dp[i-2],現在我們考慮初始條件,比如當n = 1時,dp[1] = dp[0]+dp[-1],這裡陣列越界了,所以我們要考慮初始化,dp[0]表示青蛙跳到0級台階有幾種跳法,很明顯,0種跳法,所以我們初始化為0,dp[1]表示青蛙跳到1級台階有幾種跳法,很明顯,只有一種跳法,所以初始化為1,故**如下:
#include
using
namespace std;
const
int n =
1010
;int dp[n]
;int
main()
cout << dp[n]
<< endl;
return0;
}
你們以為上面的**是正確的嗎?
是錯誤的,比如在這裡dp[2]結果為1,事實上,結果應該為2,故dp[2]也要初始化,故ac**如下:
#include
using
namespace std;
const
int n =
1010
;int dp[n]
;int
main()
cout << dp[n]
<< endl;
return0;
}
青蛙跳台階
乙隻青蛙一次可以跳上1級台階,也可以跳上2級。求該青蛙跳上乙個n級的台階總共有多少種跳法。解題思路 1 如果兩種跳法,1階或者2階,那麼假定第一次跳的是一階,那麼剩下的是n 1個台階,跳法是f n 1 2 假定第一次跳的是2階,那麼剩下的是n 2個台階,跳法是f n 2 3 總跳法為 f n f n...
青蛙跳台階
之前面試遇到了這種題目,不會,後來搜尋了一下,感覺分析的很好 青蛙跳乙個n階的台階,每次可以跳1階或者2階,求跳完n階y有多少種方法。分析 n 1,f n 1 n 2,f n 2 n 3,f n 3 n 4,f n 5 可以發現 f n f n 1 f n 2 由此也可以推想 比如要跳到第4階樓梯上...
青蛙跳台階
難易程度 中等 題目描述 乙隻青蛙一次可以跳上1級台階,也可以跳上2級。在不考慮青蛙健康狀況的情況下 求該青蛙跳上乙個n級的台階總共有多少種跳法。思路 在本題的描述中,青蛙的行動只有兩種可能 一次跳乙個台階或者兩個台階,設n階台階的跳法為 f n 如果第一次跳了一階,那麼剩下的n 1階的跳法為f n...