没啥说的,果然跟“拦截导弹”的方法完全一样,烂代码备份
#include <iostream>
#include<cstring>
#include<string>
using namespace std;
int n,num;
string v,add;
int s[10005];
int f(int i)
{
if(i==1) return 1;
if(s[i]>0) return s[i];
s[i]=1;
for(int j=i-1;j>0;--j)
{
if(v[j]<v[i])
{
int tem=f(j)+1;
s[i]=s[i]>tem?s[i]:tem;
}
}
return s[i];
}
int main()
{
cin>>num;
while(num--)
{
cin>>add;
n=add.size();
v="0";
v+=add;
memset(s,-1,sizeof(s));
int m=-1;
for(int i=n;i>0;--i)
{
int tem=f(i);
m=m>tem?m:tem;
}
cout<<m<<endl;
}
return 0;
}