(備忘録)問題解決のための「アルゴリズム数学」〜 7

問題

atcoder.jp

自分の回答

書籍に手引きがあるからスムーズに答えられるけど、パッと問題だけ見たらまず分からないなこれ

N = gets.to_i
dp = Array.new(N)
(0..N).each do |i|
  i <= 1 ? dp[i] = 1 : dp[i] = dp[i - 1] + dp[i - 2]
end
puts dp[N]

その他回答

他の回答参考に考えたやつ dp[0]とdp[1]ははそれぞれ1通りしかないので先に初期値入れてその他の値はeachで回せばもう少し分かりやすそう

N = gets.to_i
dp = Array.new(2, 1)
(2..N).each do |i| 
  dp[i] = dp[i-1] + dp[i-2]
end
p dp[N]