vijos 1028 LIS *

链接:点我

 1 #include<cstdio>

 2 #include<iostream>

 3 #include<algorithm>

 4 #include<cstring>

 5 #include<cmath>

 6 #include<queue>

 7 #include<map>

 8 using namespace std;

 9 #define MOD 1000000007

10 const int INF=0x3f3f3f3f;

11 const double eps=1e-5;

12 typedef long long ll;

13 #define cl(a) memset(a,0,sizeof(a))

14 #define ts printf("*****\n");

15 const int MAXN=2500;

16 int n,m,tt;

17 int dp[MAXN];

18 char s[MAXN][MAXN];

19 bool fun(int x,int y)

20 {

21     int len1=strlen(s[x]);

22     int len2=strlen(s[y]);

23     if(len1<len2)   return 0;

24     for(int i=0;i<len2;i++)

25     {

26         if(s[x][i]!=s[y][i])

27         {

28             return 0;

29         }

30     }

31     return 1;

32 }

33 int main()

34 {

35     int i,j,k;

36     scanf("%d",&n);

37     for(i=1;i<=n;i++)    scanf("%s",&s[i]);

38     int ans=0;

39     for(i=1;i<=n;i++)

40     {

41         int m=1;

42         for(j=1;j<i;j++)

43         {

44             if(fun(i,j))

45             {

46                 m=max(m,dp[j]+1);

47             }

48         }

49         dp[i]=m;

50         ans=max(dp[i],ans);

51     }

52     printf("%d\n",ans);

53 }

 

你可能感兴趣的:(OS)