1 solutions

  • 0
    @ 2024-12-11 0:49:30

    C :

    #include "stdio.h"
    int n,max;
    char a[2000][80];
    int b[2000];
    int F(int x,int y)
    {
    	int i,j;
    	int d1,d2;
    	d1=strlen(a[x]);
    	d2=strlen(a[y]);
    	if(d1<=d2)
    		return 0;
    	for(i=0;i<d2;i++)
    		if(a[x][i]!=a[y][i])
    			return 0;
    		return 1;
    }
    int main()
    {
    	int i,j;
    	scanf("%d",&n);
    	for(i=0;i<n;i++)
    		scanf("%s",a[i]);
    	for(i=1;i<n;i++)
    	{
    		for(j=0;j<i;j++)
    			if(F(i,j)&&b[i]==b[j])
    				b[i]++;
    	}
    	max=0;
    	for(i=1;i<n;i++)
    	{
    		if(max<b[i])
    			max=b[i];
    	}
    	printf("%d\n",max+1);
        return 0;
    }
    

    C++ :

    #include<iostream>
    #include<cstring>
    #include<string>
    using namespace std;
    
    string s[2001];
    string s1;
    int n;
    int h[2001]={0};
    int w[2001]={0};
    int m=0;
    
    void init();
    void work();
    int main()
    {
    	init();
    	work();
    	return 0;
    }
    
    void init()
    {
    	cin>>n;
    	for(int i=1;i<=n;++i)
    	{
    		cin>>s[i];
    		h[i]=s[i].size();
    		w[i]=1;
    	}
    }
    
    void work()
    {
    	for(int i=2;i<=n;++i)
    	{
    		for(int j=1;j<i;++j)
    		{
    			s1=s[i].substr(0,h[j]);
    			if(h[i]>h[j]&&w[j]+1>w[i]&&s1==s[j])
    			{
    				w[i]=w[j]+1;
    			}
    		}
    		if(w[i]>m)
    		{
    			m=w[i];
    		}
    	}
    	cout<<m;
    }
    
    • 1

    Information

    ID
    751
    Time
    1000ms
    Memory
    128MiB
    Difficulty
    (None)
    Tags
    # Submissions
    0
    Accepted
    0
    Uploaded By