フィボナッチ関数
白駿1003
ダイナミックプログラミングは、多くの時間、メモリが必要な場合に、サブ問題を解決し、結果を記録し、問題を解決する方法です.ダイナミックプランニングを習い始めたばかりで、もっと問題をしなければならないようです.
方法dynamic programming
n = int(input())
zero = [1,0]
one = [0,1]
def fibo(a):
if len(zero) <= a:
for i in range(len(zero), a+1):
zero.append(zero[i-1] + zero[i-2])
one.append(one[i-1] + one[i-2])
print(zero[a], one[a])
for i in range(n):
a = int(input())
fibo(a)
関数なし
t = int(input())
dp_o = [1,0]
dp_l = [0,1]
for _ in range(t):
n = int(input())
if len(dp_o) <= n:
for i in range(len(dp_o), n+1):
dp_o.append(dp_o[i-1]+dp_o[i-2])
dp_l.append(dp_l[i-1]+dp_l[i-2])
print(dp_o[n], dp_l[n])
0の数字を参照してフィボナッチ数列を構成します.参照1の数字もフィボナッチ数列を構成するので,それぞれのdpテーブルが形成される.
どうてきけいかくほう
多くの時間とメモリが必要な場合、サブ問題の解決、結果の記録、および問題の解決方法.
「再帰」関数を使用してフィボナッチを実装する場合は、時間がかかるため、参照0の数を表す「ゼロ」リストと
参照1の数字を表すリストを1つメモします.
どちらも入力した値が0と1の場合のみ表示されます.
fibo関数を実装する場合、リストの長さが入力した値以下である場合は、aに関するコメントがないため、どれだけ空欄にするかを示します.
そして,本来知るべき0[a]と1[a]を出力する.
リファレンス
Reference
この問題について(フィボナッチ関数), 我々は、より多くの情報をここで見つけました https://velog.io/@sezeom/피보나치-함수テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol