递推:递推的算法 与 递归 截然相反, 递推是从 《前往后 》 计算
模板:
dp[0] = x ;
dp[1] = y ;
for( int i = 2; i<=n; i++ )
{
满足的关系式 (迭代关系);
}
1.《母牛的故事》
//一开始 1 头母牛,每年生一头牛 , 小牛长大后 4 年 又能生小牛
//求第n年的母牛数量
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;int sum=0;
while(~(scanf("%d",&n))){
int mature=1;
int a=0,b=0,c=0; //mature 成熟母牛,a 一年小牛 ,b 两年牛,c 三年牛
for(int i=1;i<n;i++){
mature += c;
c = b;
b = a;
a = mature;
sum=mature+c+a+b;
}
}
cout<<sum;
}
2《特别数》
//满足条件的数为:66,1616,2626,126126,3636,136136
#include <bits/stdc++.h>
using namespace std;
int a[1010]={0};
int main()
{
int n;int sum_;
cin >> n;
a[1]=0;
a[2]=1;
for(int i=3;i<=n;i++){
for(int j=1;j<=i/2;j++){
a[i]+=1;
a[i]+=a[j];
}
}
cout<<a[n]+1;
return 0;
}
3.爬楼梯
每次可以上一阶,也可以上二阶,请问到第 n 阶,有几种方式
int climbStairs(int n){
int temp;
int sum1=1;
sum2=2;
if(n==1){
return 1;
}
if(n==2){
return 2;
}
for(int i=3;i<=n;i++){
temp=sum1+sum2; //1 2 3 5 8........符合斐波那契规律
sum1=sum2;
sum2=temp;
}
return temp;
}
4. 斐波那契
function fib(n){
int a=1,b=1,c;
for(int i=2;i<=n;i++){
c=a+b;
a=b;
b=c;
}return c;
}
【感谢您的观看】