您的位置:首页 > 其它

单调递增最长子序列

2014-08-18 15:52 120 查看
时间限制:3000 ms | 内存限制:65535 KB难度:4描述求一个字符串的最长递增子序列的长度如:dabdbf最长递增子序列就是abdf,长度为4
输入第一行一个整数0<n<20,表示有n个字符串要处理随后的n行,每行有一个字符串,该字符串的长度不会超过10000输出输出字符串的最长递增子序列的长度样例输入3aaaababcabklmncdefg样例输出137
<pre name="code" class="cpp">#include<stdio.h> #include<string.h>char a[10000];int dp[10000];int main(){	int i,j,n;	scanf("%d",&n);	while(n--)	{		memset(dp,0,sizeof(dp)); //切记对数组进行初始化 		scanf("%s",a);		int a1=strlen(a); //a数组长度		for(i=0;i<a1;i++) 		{			dp[i]=1;		}		for(i=a1-2;i>=0;i--)				for(j=i+1;j<a1;j++)			{				if(a[i]<a[j])				{					if(dp[i]<dp[j]+1)						dp[i]=dp[j]+1;														}							} 			int max=0;			for(i=0;i<a1;i++)			{				if(dp[i]>max)									max=dp[i];							}			printf("%d\n",max);	}	return 0;}

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: