最长子序列
#include <bits/stdc++.h>
using namespace std;
int dp[1000];
int main()
{
string str;
cin>>str;
int n=str.size(),ans;
for(int i=0; i<n; i++)//本身就是子序列
{
dp[i]=1;
}
for(int i=0; i<n; i++)
{
for(int j=i; j>=0; j--)
{
if(str[j]<str[i])//记下i之前的最长子序列
{
dp[i] = max(dp[i], dp[j] + 1);
}
}
ans=max(ans,dp[i]);//记下最长子序列长度
}
cout<<ans<<endl;
for(int i=0; i<n; i++)
cout<<dp[i]<<" ";
return 0;
}