Below is an instruction that describes a task. Write a response that appropriately completes the request.

### Instruction:
C ++プログラムを作成して、トップダウンアプローチと別のボトムアップを備えたダイナミックプログラミングを使用して、フィボナッチ継承のn番目の数を計算します。

### Response:

以下は、トップダウンおよびボトムアップアプローチを備えた動的プログラミングを使用して、Fibonacci継承のn番目の数を計算するC ++プログラムです。

トップダウンアプローチ：
#iblude <iostream>
#include <unorded_map>

名前空間STDを使用。

unorded_map <int、int> memo;

ent fib_top_down（int n）{
  if（n == 0）return 0;
  if（n == 1）1を返します。
  if（memo.count（n））Return Memo [n];
  int result = fib_top_down（n -1） + fib_top_down（n -2）;
  メモ[n] = results;
  返品結果;
}

int main（）{
  int n;
  cout << "n："の値を入力します。
  cin >> n;
  cout << "nth fibonacci番号は次のとおりです。" << fib_top_down（n）<< endl;
  0を返します。
}

ボトムアップアプローチ：

#iblude <iostream>
#iblude <ctrator>

名前空間STDを使用。

Vector <nt> fibottom_up（int n）{
  <at> result（n + 1）;
  結果[0] = 0;
  結果[1] = 1;
  for（int i = 2; i <= n; i ++）{
    result [i] = results [i -1] + result [i -2];
  }
  返品結果;
}

int main（）{
  int n;
  cout << "n："の値を入力します。
  cin >> n;
  cout << "nth fibonacci番号は次のとおりです。" << fibottom_up（n）[n] << endl;
  0を返します。
}