很简单的DP,从后往前慢慢推。。也很好理解
记着几个经典的DP,以后的问题都是从这些简单的DP推出来的。。
#include <stdio.h> #include <string.h> #include <algorithm> using namespace std; int main() { char a[10001]; int t,len,i,j,dp[10001]; scanf("%d",&t); getchar(); while(t--) { gets(a); len=strlen(a); for(i=0;i<len;i++)//每个字母都初始为1 dp[i]=1; for(i=len-2;i>=0;i--) { for(j=i+1;j<len;j++) { if(a[i]<a[j]&&dp[i]<dp[j]+1)//转移方程 dp[i]=dp[j]+1; } } sort(dp,dp+len); printf("%d\n",dp[len-1]); } return 0; }
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/su20145104009/article/details/47203765