1137. 第 N 个泰波那契数

2024-09-04 11:44
文章标签 契数 1137 个泰波

本文主要是介绍1137. 第 N 个泰波那契数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

泰波那契序列 Tn 定义如下:

T0 = 0, T1 = 1, T2 = 1, 且在 n >= 0 的条件下 Tn+3 = Tn + Tn+1 + Tn+2

给你整数 n,请返回第 n 个泰波那契数 Tn 的值。

示例 1:

输入:n = 4
输出:4
解释:
T_3 = 0 + 1 + 1 = 2
T_4 = 1 + 1 + 2 = 4
示例 2:

输入:n = 25
输出:1389537
提示:

0 <= n <= 37
答案保证是一个 32 位整数,即 answer <= 2^31 - 1。
Related Topics
记忆化搜索
数学
动态规划

直接下意识解法

class Solution {public int tribonacci(int n) {if(n==0){return 0;}else if(n==1 || n==2){return 1;}else{int t0 = 0;int t1 = 1;int t2 = 1;int sum = 0;for(int i=3;i<=n;i++){sum = t0+t1+t2;t0=t1;t1=t2;t2=sum;}return sum;}}
}

dp数组,也被人叫做“打表”。

class Solution {public int tribonacci(int n) {if(n==0){return 0;}else if(n==1 || n==2){return 1;}else{int dp[] = new int[n+1];dp[0] = 0;dp[1] = 1;dp[2] = 1;for(int i=3;i<=n;i++){dp[i] = dp[i-1]+dp[i-2]+dp[i-3];}return dp[n];}}
}

递归,时间超时

class Solution {public int tribonacci(int n) {if(n==0){return 0;}else if(n==1 || n==2){return 1;}else{return tribonacci(n-1)+tribonacci(n-2)+tribonacci(n-3);}}
}

这篇关于1137. 第 N 个泰波那契数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1135928

相关文章

简易记录下python与java、C计算斐波那契数耗时

简单比较了下python与java、C计算的耗时,忽略了编译器优化,javac和gcc都采用默认参数。python耗时比较大,比后两者长了两个数量级级别。java表现出来优于C,应该是编译优化的结果。python计算,耗时三十余秒 简易代码: import timedef fibonacci(n):if n <= 1:return nelse:return fibonacci(n-1) + f

C++学习笔记——菲波那契数

一、题目描述 二、代码 #include <iostream>using namespace std;int main(){int k=0;cin >> k;int a[k];a[0]=1;a[1]=1;for(int i=2;i<k;i++){a[i]= a[i-1] +a[i-2] ;}cout << a[k-1];return 0;}

leetcode509:斐波那契数

斐波那契数 斐波那契数 (通常用 F(n) 表示)形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是: F(0) = 0,F(1) = 1F(n) = F(n - 1) + F(n - 2),其中 n > 1 给定 n ,请计算 F(n) 。 public int fib(int n) {if(n <= 1){return n;}i

动态规划DP--斐波那契数、爬楼梯、使用最小花费爬楼梯等示例代码

动态规划DP 文章目录 动态规划DP509. 斐波那契数70. 爬楼梯746. 使用最小花费爬楼梯62. 不同路径63. 不同路径II343.整数拆分 509. 斐波那契数 509. 斐波那契数 斐波那契数 (通常用 F(n) 表示)形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是: F(0) = 0,F(1) =

代码随想录算法训练营第38天|● 理论基础 ● 509. 斐波那契数● 70. 爬楼梯 ● 746. 使用最小花费爬楼梯

动态规划理论基础 动态规划,英文:Dynamic Programming,简称DP,如果某一问题有很多重叠子问题,使用动态规划是最有效的。 所以动态规划中每一个状态一定是由上一个状态推导出来的,这一点就区分于贪心,贪心没有状态推导,而是从局部直接选最优的, 动态规划做题步骤 确定dp数组(dp table)以及下标的含义确定递推公式dp数组如何初始化确定遍历顺序举例推导dp数组 动态规划

代码随想录算法训练营第三十八天| 509. 斐波那契数 ,70. 爬楼梯,746. 使用最小花费爬楼梯

509. 斐波那契数 - 力扣(LeetCode) class Solution {public int fib(int n) {if (n <= 1) {return n;}int[] dp = new int[n + 1];dp[0] = 0;dp[1] = 1;for (int i = 2; i <= n; i++) {dp[i] = dp[i - 1] + dp[i - 2];}re

day 38 ||第九章 动态规划part01||509. 斐波那契数 70. 爬楼梯 746. 使用最小花费爬楼梯

509. 斐波那契数 首先我想的是递归方法,蒙对了,不过你自己对比一下你的递归和卡尔的递归,是不是还可以简化。。。。。 class Solution {public int fib(int n) {if(n==0) return 0;if(n == 1) return 1;int sum = recursion(n-1)+recursion(n-2);return sum;}private

代码随想录算法训练营Day38|动态规划理论基础、2.斐波那契数、3.爬楼梯、4.使用最小花费爬楼梯

动态规划理论基础 代码随想录 (programmercarl.com) 动态规划(Dynamic Programming,简称DP)是一种算法设计技术,它通过将复杂问题分解为更小的子问题来解决优化问题。动态规划通常用于解决那些具有重叠子问题和最优子结构特性的问题。(可以理解为一种递推) 重叠子问题:         在递归算法中,相同的子问题会被多次计算。动态规划通过存储这些子问题的解来避

代码随想录算法训练营第38天 [ 509. 斐波那契数 70. 爬楼梯 746. 使用最小花费爬楼梯]

代码随想录算法训练营第38天 [ 509. 斐波那契数 70. 爬楼梯 746. 使用最小花费爬楼梯] 动态规划做题顺序 1.明确dp数组的含义 2.递推公式 3.dp数组的初始化 4.确认遍历的顺序 5.举例看看递推公式满不满足 一、509. 斐波那契数 链接: 代码随想录. 思路:经典dp数组 做题状态:看解析后做出来了 class Solution {public

lightoj 1137 Expanding Rods | 二分+几何

题意: 一根棍子,受热后长度会改变。L' = (1+n*C)*L 问你受热后棍子的中点距离地面的高度h为多少。 思路: 推公式, L' = p*r ——p为弧度 r = (L/2)/sin(p/2)  两式联立,二分p即可。 AC代码: [cpp]  view plain copy #include <cstring>   #include