文章

4

粉丝

209

获赞

11

访问

3.0k

头像
斐波那契数列 题解:动态规划,有记忆的存储,空间换时间

  1. // 定义一个函数,用于计算数列的第 n 项
  2. long long f(int n){
  3.     // 初始化一个足够大的数组来存储数列的值
  4.     long long dp[70];
  5.     // 数列的前三项分别为 1, 1, 和 2
  6.     dp[0] = dp[1] = 1;
  7.     dp[2] = 2;
  8.     // 从第四项开始,每一项都是前三项的和
  9.     for(int i = 3; i <= n; i++ ){
  10.         dp[i] = dp[i-1] + dp[i-2] + dp[i-3];
  11.     }
  12.     // 返回第 n 项的值
  13.     return dp[n];
  14. }
  15. // 主函数
  16. int main(){
  17.     // 定义变量 n
  18.     int n;
  19.     // 使用 scanf 函数读取输入直到文件结束
  20.     while(~scanf("%d",&n)){
  21.         // 调用 f 函数计算第 n 项的值,并打印出来
  22.         printf("%lld\n",f(n));
  23.     }
  24. }
  25. //dp 数组用来存储数列的每一项的值,以便可以快速访问之前计算的结果,而不需要重复计算。这种方法称为记忆化,是动态规划技术的一个常见特点。

 

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发