题目:
大家都知道斐波那契数列,现在要求输入一个正整数 n ,请你输出斐波那契数列的第 n 项。
斐波那契数列是一个满足
的数列。
数据范围:1≤n≤40
要求:空间复杂度 o(n),时间复杂度 o(n)
输入描述:
仅输入一个正整数 n。
输出描述:
输出斐波那契数列中第 n 个数。
#include<stdio.h>
int main()
{
int dp[60] = { 0 },n=0;
scanf_s("%d",&n);
//对dp数组进行赋初值
dp[0] = 1;
dp[1] = 1;
for (int i = 2; i <n; i++)
{
dp[i] = dp[i - 1] + dp[i - 2];
}
printf("%d", dp[n-1]);;
return 0;
}
题解:定义一个60空间的dp数字(dp:就是动态规划英文名字的首字母缩写)然后输出一个指定的数值,这就是简单的递归,什么是递归,递归就是累加。然后初始元素0和元素1的值为1,然后循环的值从2开始。
dp[2]=2-1+2-2 //数组元素操作的对应数值做运算,每次累加的值赋给他本身然后继续循环累加,直到条件判断不成立。这里是整个代码的核心操作,一般大家都叫做状态转移方程。
最后输出循环结束的最终结果