1.不管什么类型的递推题目,总是有规律可循的。然而这个时候切记不可写成递归形式,递归算法最大特点就是有一个回溯的过程,必然是要超时的,要解决超时问题,还需要转化为递推算法。而递推算法与递归算法正好相反,递推是从后往前计算,而递推正好是从前往后计算。
2.所做题目递推公式总结:
2.1 骨牌方格,dp[ i ] = dp [i-1] + dp[ i-2 ]; https://blog.csdn.net/ssyitwin/article/details/80084346
2.2 母牛的故事,dp[ i ] = dp [i-1] + dp[ i-3 ];
https://blog.csdn.net/ssyitwin/article/details/80084725
2.3 Tiling_easy version,dp[i]=dp[i-1]+dp[i-2]*2,https://blog.csdn.net/ssyitwin/article/details/80085529
2.4 统计问题,a[i]=a[i-1]*2+a[i-2]; https://blog.csdn.net/ssyitwin/article/details/80098822
观察不难发现,都是该项与前两项之间的关系。
3.模板总结:
#include<iostream>
#include<cstdio>
using namespace std;
long long dp[37];
void f()
{
dp[1],dp[2]的初始值;
for(int i=3;i<=30;i++)
所满足的关系式;
}
int main()
{
int t;
int n;
f();
cin>>t;
while(t--)
{
cin>>n;
cout<<dp[n]<<endl;
}
return 0;
}