动态规划
是一种算法设计技巧,用于解决具有重叠子问题和最优子结构的问题。
#include <stdio.h>
// 动态规划解决斐波那契数列
int fibonacci(int n)
{
// 创建一个数组来存储斐波那契数列的值
int fib[n+1];
int i;
// 初始化基础情况
fib[0] = 0;
fib[1] = 1;
// 填充剩余的斐波那契数列
for(i = 2; i <= n; i++) {
fib[i] = fib[i-1] + fib[i-2];
}
// 返回第n个斐波那契数
return fib[n];
}
int main()
{
int n = 10; // 例如,我们想找到第10个斐波那契数
printf("Fibonacci number is %d", fibonacci(n));
return 0;
}
在这个例子中,fibonacci
函数使用动态规划来计算斐波那契数列。它首先创建了一个数组fib
来存储斐波那契数列的值。
然后,它初始化了数组的前两个元素,即斐波那契数列的前两个数。
接着,它使用一个循环来计算并存储数组的剩余元素。每个元素都是前两个元素的和。
最后,函数返回所需的斐波那契数。