1 solutions
-
0
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