一.递推
即所谓的找规律
如斐波那契,\(F(n)=F(n-1)+F(n-2)\)
信封:错排公式,有\(n\)个信封,有多少种信都装错信封的情况?
\(F(n)=(n−1)(F(n−1)+F(n−2))\)
技巧:代码优化
typedef long long ll;
ll a;//表示long long
二.DP
最大字段和:
max=-100000;
for(int i=2;i<=n;i++)
{
if(dp[i-1]+a[i]<0)dp[i]=0;
else dp[i]=dp[i-1]+a[i];
if(dp[i]>maxn)maxn=dp[i];
}
最长上升子序列
int ans=0;
for(int i=1;i<=n;i++)
{
dp[i]=1;
for(int j=1;j<i;j++)
if(a[j]>a[i]) dp[i]=max(dp[i],dp[j+1]);
ans=max(ans,dp[i]);
}
cout<<ans;
cout<<maxn<<endl;
```