文章

4

粉丝

159

获赞

2

访问

974

头像
斐波那契数列 题解:动态规划,有记忆的存储,空间换时间
P1111 云南大学机试题
发布于2024年3月13日 19:16
阅读数 235

// 定义一个函数,用于计算数列的第 n 项
long long f(int n){
    // 初始化一个足够大的数组来存储数列的值
    long long dp[70];
    // 数列的前三项分别为 1, 1, 和 2
    dp[0] = dp[1] = 1;
    dp[2] = 2;
    // 从第四项开始,每一项都是前三项的和
    for(int i = 3; i <= n; i++ ){
        dp[i] = dp[i-1] + dp[i-2] + dp[i-3];
    }
    // 返回第 n 项的值
    return dp[n];
}

// 主函数
int main(){
    // 定义变量 n
    int n;
    // 使用 scanf 函数读取输入直到文件结束
    while(~scanf("%d",&n)){
        // 调用 f 函数计算第 n 项的值,并打印出来
        printf("%lld\n",f(n));
    }
}
//dp 数组用来存储数列的每一项的值,以便可以快速访问之前计算的结果,而不需要重复计算。这种方法称为记忆化,是动态规划技术的一个常见特点。

 

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发