斐波那契数列介绍和使用

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

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];

}

};

相关推荐
paeamecium2 小时前
【PAT】 - Course List for Student (25)
数据结构·c++·算法·pat考试
wen__xvn2 小时前
力扣洛谷模拟题刷题2
算法·leetcode·职场和发展
漫随流水2 小时前
c++编程:说反话(1009-PAT乙级)
数据结构·c++·算法
计算机安禾3 小时前
【数据结构与算法】第23篇:树、森林与二叉树的转换
c语言·开发语言·数据结构·c++·线性代数·算法·矩阵
温九味闻醉3 小时前
人工智能应用作业1:PPO强化学习算法
人工智能·算法
wfbcg4 小时前
每日算法练习:LeetCode 167. 两数之和 II - 输入有序数组 ✅
算法·leetcode·职场和发展
A~MasterYi4 小时前
深入理解 Microscaling (MX) 格式:从浮点基础到共享指数矩阵乘法
算法·矩阵
环黄金线HHJX.4 小时前
《Tuan(拼音字母)⇆团(Group)/&湍(Turbulence)/&双结构链路道/&文字、符号、语言/&源点设计、连接起:人类与自然+AICosmOS》
开发语言·人工智能·算法·编辑器
有时间要学习4 小时前
面试150——第七周
算法·面试·深度优先