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



class Solution {
public:
int tribonacci(int n) {
if(n==0) return 0;
if(n==1||n==2) return 1;
vector<int> f(n+1);
f0=0,f1=1,f2=1;
for(int i=3;i<=n;i++){
fi=fi-1+fi-2+fi-3;
}
return fn;
}
};



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;
ret1=1,ret2=2,ret3=4;
for(int i=4;i<=n;i++){
reti=((reti-1+reti-2)%a+reti-3)%a;
}
return retn;
}
};



class Solution {
public:
int minCostClimbingStairs(vector<int>& cost) {
int n=cost.size();
vector<int> ret(n+1,0);
ret1=0,ret0=0;
for(int i=2;i<=n;i++){
reti=min(reti-1+costi-1,reti-2+costi-2);
}
return retn;
}
};



c
class Solution {
public:
int numDecodings(string s) {
int n=s.size();
vector<int> ret(n);
//初始化前两个位置
if(s0=='0') return 0;
else ret0=1;
if(n==1) return ret0;
if(s1>='1'&&s1<='9') ret1+=ret0;
int t=(s0-'0')*10+s1-'0';
if(t>=10&&t<=26) ret1+=1;
for(int i=2;i<n;i++){
if(si>='1'&&si<='9') reti+=reti-1;
int m=(si-1-'0')*10+si-'0';
if(m>=10&&m<=26) reti+=reti-2;
}
return retn-1;
}
};