老师亲手码的!!!
2025-11-28 21:48:19
发布于:浙江
6阅读
0回复
0点赞
这是我自己写的,骗你的,这可是课上老师亲手码的,注释懒得抄,是忘抄了,自己理解
#include<bits/stdc++.h>
using namespace std;
string s;
string a[100050];
int len,dp[100050];
int pre[1000005];
int main(){
cin>>s;
for(int i = 0;s[i];i++){
if('A' <= s[i] && s[i] <='Z'){
len++;
a[len] = s[i];
}
else a[len]+=s[i];
}
for(int i=1;i<=len;i++){
dp[i]=1;
pre[i]=0;
for(int j=1;j<i;j++){
if(a[i]>a[j]){
if(dp[i]<dp[j]+1){
pre[i]=j;
dp[i]=dp[j]+1;
}else if(dp[i]==dp[j]+1){
if(a[j]<=a[pre[i]])pre[i]=j;
}
}
}
}
int l=0,ed=0;
for(int i=1;i<=len;i++){
if(l<dp[i]){
l=dp[i];
ed=i;
}
else if(l==dp[i]){
if(a[i]<a[ed]){
ed=i;
}
}
}
string ans;
while(ed){
ans=a[ed]+ans;
ed=pre[ed];
}
cout<<ed;
}
这里空空如也



有帮助,赞一个