hdu 4545 魔法串

http://acm.hdu.edu.cn/showproblem.php?pid=4545

 1 #include <cstdio>
 2 #include <cstring>
 3 #include <algorithm>
 4 #define maxn 2000
 5 using namespace std;
 6
 7 char s1[maxn],s2[maxn];
 8 int t,m;
 9 int dp[maxn][maxn];
10 int g[maxn][maxn];
11
12 int main()
13 {
14     scanf("%d",&t);
15     for(int cas=1; cas<=t; cas++)
16     {
17         scanf("%s",s1+1);
18         scanf("%s",s2+1);
19         scanf("%d",&m);
20         getchar();
21         memset(g,0,sizeof(g));
22         for(int i=1; i<=m; i++)
23         {
24             char ch1,ch2;
25             scanf("%c %c",&ch1,&ch2);
26             getchar();
27             g[ch2-‘a‘][ch1-‘a‘]=1;
28         }
29         memset(dp,0,sizeof(dp));
30         int k1=strlen(s1+1);
31         int k2=strlen(s2+1);
32         bool flag=true;
33         for(int i=1; i<=k1; i++)
34         {
35             for(int j=1; j<=k2; j++)
36             {
37                 dp[i][j]=max(dp[i-1][j],dp[i][j-1]);
38                 if(s1[i]==s2[j]||(g[s1[i]-‘a‘][s2[j]-‘a‘]==1))
39                 {
40                     dp[i][j]=max(dp[i][j],dp[i-1][j-1]+1);
41                 }
42             }
43         }
44         printf("Case #%d: ",cas);
45         if(dp[k1][k2]==k1) printf("happy\n");
46         else printf("unhappy\n");
47     }
48     return 0;
49 }

时间: 2024-10-12 17:27:56

hdu 4545 魔法串的相关文章

HDU - 4545魔法串最长公共子序列

HDU - 4545 魔法串 Time Limit: 1000MS   Memory Limit: 32768KB   64bit IO Format: %I64d & %I64u Submit Status Description 小明和他的好朋友小西在玩一个新的游戏,由小西给出一个由小写字母构成的字符串,小明给出另一个比小西更长的字符串,也由小写字母组成,如果能通过魔法转换使小明的串和小西的变成同一个,那么他们两个人都会很开心.这里魔法指的是小明的串可以任意删掉某个字符,或者把某些字符对照字

HDU 4545

魔法串 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total Submission(s): 1442    Accepted Submission(s): 541 Problem Description 小明和他的好朋友小西在玩一个新的游戏,由小西给出一个由小写字母构成的字符串,小明给出另一个比小西更长的字符串,也由小写字母组成,如果能通过魔法转换使小明的串和小西的变成同一

HDU 4545-魔法串-字符串

魔法串 问题描述 : 小明和他的好朋友小西在玩一个新的游戏,由小西给出一个由小写字母构成的字符串,小明给出另一个比小西更长的字符串,也由小写字母组成,如果能通过魔法转换使小明的串和小西的变成同一个,那么他们两个人都会很开心.这里魔法指的是小明的串可以任意删掉某个字符,或者把某些字符对照字符变化表变化. 如: 小西的串是 abba; 小明的串是 addba; 字符变化表 d b (表示d能转换成b). 那么小明可以通过删掉第一个d,然后将第二个d转换成b将串变成abba. 现在请你帮忙判断:他们能

hdu----(4545)魔法串(LCS)

魔法串 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total Submission(s): 1607    Accepted Submission(s): 594 Problem Description 小明和他的好朋友小西在玩一个新的游戏,由小西给出一个由小写字母构成的字符串,小明给出另一个比小西更长的字符串,也由小写字母组成,如果能通过魔法 转换使小明的串和小西的变成同

HDU 2203 亲和串

题解:将原来的串扩展为两倍,然后用KMP匹配. #include <cstdio> #include <cstring> char str[200005],pat[100005]; int next[100005],N,M; void getnext(){ int i=1,j=0;next[1]=0; while(i<M){ if(j==0||pat[i]==pat[j])next[++i]=++j; else j=next[j]; } } int KMP(){ int i=

hdu 2203 亲和串 kmp

题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=2203 思路: Problem Description 人随着岁数的增长是越大越聪明还是越大越笨,这是一个值得全世界科学家思考的问题,同样的问题Eddy也一直在思考,因为他在很小的时候就知道亲和串如何判断了,但是发现,现在长大了却不知道怎么去判断亲和串了,于是他只好又再一次来请教聪明且乐于助人的你来解决这个问题.亲和串的定义是这样的:给定两个字符串s1和s2,如果能通过s1循环移位,使s2包含在s1中

hdu 4545 贪心 *

题意:小明和他的好朋友小西在玩一个新的游戏,由小西给出一个由小写字母构成的字符串,小明给出另一个比小西更长的字符串,也由小写字母组成,如果能通过魔法转 换使小明的串和小西的变成同一个,那么他们两个人都会很开心.这里魔法指的是小明的串可以任意删掉某个字符,或者把某些字符对照字符变化表变化.如: 小西的串是 abba; 小明的串是 addba; 字符变化表 d b (表示d能转换成b). 那么小明可以通过删掉第一个d,然后将第二个d转换成b将串变成abba. 现在请你帮忙判断:他们能不能通过魔法转换

HDU 2203 亲和串 (KMP或者strstr)

亲和串 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 8756    Accepted Submission(s): 3976 Problem Description 人随着岁数的增长是越大越聪明还是越大越笨,这是一个值得全世界科学家思考的问题,同样的问题Eddy也一直在思考,因为他在很小的时候就知道亲和串如何判断了,但是发现,现在长

HDU 2203 亲和串(多个字符串函数的运用)

亲和串 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 11578    Accepted Submission(s): 5221 Problem Description 人随着岁数的增长是越大越聪明还是越大越笨,这是一个值得全世界科学家思考的问题,同样的问题Eddy也一直在思考,因为他在很小的时候就知道亲和串如何判断了,但是发现,现在