斐波那契数列动态规划c++
时间: 2023-09-22 13:11:53 浏览: 145
以下是使用动态规划求解斐波那契数列的 C++ 代码:
```c++
#include <iostream>
using namespace std;
int Fibonacci(int n) {
// 创建一个数组来存储斐波那契数列的值
int fib[n+1];
fib[0] = 0;
fib[1] = 1;
// 使用动态规划计算斐波那契数列的值
for (int i = 2; i <= n; i++) {
fib[i] = fib[i-1] + fib[i-2];
}
return fib[n];
}
int main() {
int n = 10;
cout << "斐波那契数列第" << n << "项的值为:" << Fibonacci(n) << endl;
return 0;
}
```
该代码中,我们使用一个数组 `fib` 来存储斐波那契数列的值,数组下标从 0 开始,因此数组的长度应为 `n+1`。接着,我们初始化数组的前两个元素为 0 和 1,然后使用循环计算出数组中的剩余元素,即斐波那契数列的值。最后,返回数组中第 `n` 个元素的值即可。
运行上述代码得到的输出为:
```
斐波那契数列第10项的值为:55
```
相关问题
斐波那契数列c++动态规划
斐波那契数列是指这样一个数列:0、1、1、2、3、5、8、13、21、34、……,其中每一项都等于前两项之和。c++动态规划法求斐波那契数列的思路是:先定义一个数组F,F[i]表示斐波那契数列中第i个数的值,然后通过循环计算F[i]的值,最后返回F[n]即可得到斐波那契数列中第n个数的值。具体实现可以参考以下代码:
```
#include <iostream>
using namespace std;
int number(int* F, int n) {
if (n == 0) return F[0];
else if (n == 1) return F[1];
else {
for (int i = 2; i <= n; i++) {
F[i] = F[i - 1] + F[i - 2];
}
return F[n];
}
}
int main() {
int n, num;
int F[10];
cin >> n;
F[0] = 0;
F[1] = 1;
num = number(F, n);
cout << num << endl;
return 0;
}
```
斐波那契数列的动态规划题目c++代码
斐波那契数列是一个经典的动态规划问题,在C++中可以使用数组或者递推的方式解决。以下是使用动态规划的一个简单C++代码示例:
```cpp
#include <iostream>
using namespace std;
int fibonacci(int n) {
if (n <= 0) return 0;
else if (n == 1 || n == 2) return 1; // 基本情况
int dp[n + 1]; // 创建一个大小为(n+1)的数组用于存储中间结果
dp[0] = 0;
dp[1] = 1;
// 动态规划的核心部分:通过已知值计算新的值
for (int i = 2; i <= n; ++i) {
dp[i] = dp[i - 1] + dp[i - 2];
}
return dp[n]; // 返回第n项的值
}
int main() {
int num;
cout << "请输入一个正整数: ";
cin >> num;
cout << "斐波那契数列的第" << num << "项是: " << fibonacci(num) << endl;
return 0;
}
```
阅读全文