关闭

【TYVJ】1024 外星人的密码数字

标签: 动态规划最长上升子序列DPTYVJ置换
411人阅读 评论(0) 收藏 举报
分类:

【解析】置换+DP

#include <cstdio>
#include <cstring>
#include <cstdlib>
using namespace std;

const int L=300;

char s[30]; int p[30];
char t[L]; int chg[L],lt,f[L],res;

inline int max(int i,int j)
{
	return i>j?i:j;
}

int main(void)
{
	scanf("%s",s);
	for (int i=0;i<26;i++) p[s[i]-'a']=i;
	
	for (;~scanf("%s",&t[1]);)
	{		
		lt=strlen(&t[1]);
		for (int i=1;i<=lt;i++) f[i]=1,chg[i]=p[t[i]-'a'];
		for (int i=1;i<=lt;i++)
			for (int j=i-1;j;j--)
				if (chg[i]>=chg[j]) 
					f[i]=max(f[i],f[j]+1);
					
		res=0;
		for (int i=1;i<=lt;i++) res=max(res,f[i]);
		printf("%d",res);
	}
	printf("\n");
	
	return 0;
}


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:50255次
    • 积分:1869
    • 等级:
    • 排名:千里之外
    • 原创:137篇
    • 转载:0篇
    • 译文:0篇
    • 评论:3条
    最新评论