题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=17
跟做的上一道题目几乎一样,关键地方的代码改一下就行了
代码:
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
char str[10010];
int dp[10010];
int main(){
int n;
int i,j,k,t;
scanf("%d",&n);
while(n--){
// memset(dp,1,sizeof(dp));
for(i=0;i<10010;i++)
dp[i]=1;
// for(i=0;i<12;i++)
// printf("%d ",dp[i]);
// getchar();
scanf("%s",str);
k=strlen(str);
for(i=k-2;i>=0;i--){
for(j=i+1;j<k;j++)
if(str[j]>str[i]&&dp[i]<dp[j]+1)
dp[i]=dp[j]+1;
}
int max=0;
for(i=0;i<k;i++)
if(dp[i]>max)
max=dp[i];
printf("%d\n",max);
}
return 0;
}