1. 程式人生 > >NYOJ17 最長單調遞增子序列 線性dp

NYOJ17 最長單調遞增子序列 線性dp

tar 最長 using print code \n clu sca can

題目鏈接:

http://acm.nyist.edu.cn/JudgeOnline/problem.php?pid=17

分析:

i=1

dp[i]=1

i!=1

dp[i]=max(dp[j]+1) j<i&&a[j]<a[i]

代碼如下:

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n;
    scanf("%d",&n);
    getchar();
    while(n--)
    {
        char a[10005];
        gets(a);
        
int l=strlen(a); int dp[l]; dp[0]=1; for(int i=1;i<l;i++) { int t=0; for(int j=0;j<i;j++) { if(a[j]<a[i]) { if(t<dp[j]) { t=dp[j]; } } } dp[i]
=t+1; } int t=dp[0]; for(int i=1;i<l;i++) { if(t<dp[i]) { t=dp[i]; } } printf("%d\n",t); } return 0; }

NYOJ17 最長單調遞增子序列 線性dp