斐波那契数列介绍和使用

该模型是动态规划模型中的一个重要分支,让我们来进行学习

class Solution {

public:

int tribonacci(int n) {

if(n==0) return 0;

if(n==1||n==2) return 1;

vector<int> f(n+1);

f[0]=0,f[1]=1,f[2]=1;

for(int i=3;i<=n;i++){

f[i]=f[i-1]+f[i-2]+f[i-3];

}

return f[n];

}

};

class Solution {

public:

const int a=1e9+7;

int waysToStep(int n) {

vector<int> ret(n+1);

if(n==1) return 1;

if(n==2) return 2;

if(n==3) return 4;

ret[1]=1,ret[2]=2,ret[3]=4;

for(int i=4;i<=n;i++){

ret[i]=((ret[i-1]+ret[i-2])%a+ret[i-3])%a;

}

return ret[n];

}

};

class Solution {

public:

int minCostClimbingStairs(vector<int>& cost) {

int n=cost.size();

vector<int> ret(n+1,0);

ret[1]=0,ret[0]=0;

for(int i=2;i<=n;i++){

ret[i]=min(ret[i-1]+cost[i-1],ret[i-2]+cost[i-2]);

}

return ret[n];

}

};

c

class Solution {

public:

int numDecodings(string s) {

int n=s.size();

vector<int> ret(n);

//初始化前两个位置

if(s[0]=='0') return 0;

else ret[0]=1;

if(n==1) return ret[0];

if(s[1]>='1'&&s[1]<='9') ret[1]+=ret[0];

int t=(s[0]-'0')*10+s[1]-'0';

if(t>=10&&t<=26) ret[1]+=1;

for(int i=2;i<n;i++){

if(s[i]>='1'&&s[i]<='9') ret[i]+=ret[i-1];

int m=(s[i-1]-'0')*10+s[i]-'0';

if(m>=10&&m<=26) ret[i]+=ret[i-2];

}

return ret[n-1];

}

};

相关推荐
刀法如飞14 分钟前
Go 字符串查找的 20 种实现方式,用不同思路解决问题
算法·面试·程序员
Dlrb12112 小时前
C语言-指针数组与数组指针
c语言·数据结构·算法·指针·数组指针·指针数组·二级指针
WL_Aurora2 小时前
Python 算法基础篇之集合
python·算法
平行侠2 小时前
A15 工业路由器IP前缀高速检索与内存压缩系统
网络·tcp/ip·算法
阿旭超级学得完3 小时前
C++11包装器(function和bind)
java·开发语言·c++·算法·哈希算法·散列表
li星野3 小时前
位运算 & 数学 & 高频进阶九题通关(Python + C++)
c++·python·学习·算法
jerryinwuhan4 小时前
hello算法,简单讲(1)
算法·排序算法
y = xⁿ4 小时前
20天速通LeetCodeday15:BFS广度优先搜索
算法·宽度优先
400分4 小时前
吃透RAG核心-----语义检索与关键字检索底层原理
算法·架构
目黑live +wacyltd4 小时前
算法备案:常见驳回原因与应对策略
人工智能·算法