0
点赞
收藏
分享

微信扫一扫

小白回顾----DP专练


Part one:

由于本人的的dp水平实在是太水了,所以我准备在这开一个dp的练习回顾,将以后遇到的dp题全都写入这一章中

小白回顾----DP专练_c代码


题意:

求最长公共递增子序列

题解:

理解dp的定义,找到一个状态把他优化成最优再找下一个状态

AC代码:

#include<bits/stdc++.h>
using namespace std;
#define ll long long
ll dp[1005];
ll a[1005];
ll lis(ll n)
{

for(ll i=0;i<n;i++)
{
dp[i]=1;
for(ll j=0;j<i;j++)
{
if(a[j]<a[i])
dp[i]=max(dp[i],dp[j]+1);
}
}
ll maxx=0;
for(ll i=0;i<n;i++)
{
if(maxx<dp[i])
maxx=dp[i];
}
return maxx;

}
int main()
{

ll n;
while(~scanf("%lld",&n))
{

for(int i=0;i<n;i++)
scanf("%d",&a[i]);

printf("%lld\n",lis(n));

}


}


举报

相关推荐

0 条评论