HDU 4545-魔法串-字符串
2015-12-02 19:59
225 查看
魔法串
问题描述 :小明和他的好朋友小西在玩一个新的游戏,由小西给出一个由小写字母构成的字符串,小明给出另一个比小西更长的字符串,也由小写字母组成,如果能通过魔法转换使小明的串和小西的变成同一个,那么他们两个人都会很开心。这里魔法指的是小明的串可以任意删掉某个字符,或者把某些字符对照字符变化表变化。
如: 小西的串是 abba;
小明的串是 addba;
字符变化表 d b (表示d能转换成b)。
那么小明可以通过删掉第一个d,然后将第二个d转换成b将串变成abba。
现在请你帮忙判断:他们能不能通过魔法转换使两个人的串变成一样呢?
输入:
首先输入T,表示总共有T组测试数据(T <= 40)。 接下来共T组数据,每组数据第一行输入小西的字符串,第二行输入小明的字符串(数据保证字符串长度不超过1000,小明的串的长度大于等于小西的,且所有字符均为小写字母)。接着输入字母表,先输入m,表示有m个字符变换方式(m< = 100),接着m行每行输入两个小写字母,表示前一个可以变为后一个(但并不代表后一个能变成前一个)。
输出:
首先输入T,表示总共有T组测试数据(T <= 40)。 接下来共T组数据,每组数据第一行输入小西的字符串,第二行输入小明的字符串(数据保证字符串长度不超过1000,小明的串的长度大于等于小西的,且所有字符均为小写字母)。接着输入字母表,先输入m,表示有m个字符变换方式(m< = 100),接着m行每行输入两个小写字母,表示前一个可以变为后一个(但并不代表后一个能变成前一个)。
样例输入:
2 abba addba 1 d b a dd 0
样例输出:
Case #1: happy Case #2: unhappy 解题思路: (1)、因为这是一道关于字符串的问题,当我们敲换行键的时候,我们要用一个getchar()来接收这个换行键。 (2)、我们用一个数组来记录可以转换的字符,打印出一张转换表 (3)、我们把s2转成和s1相同的字符串有两种方法,从s2删除或按照转换表将s2进行转换
#include <iostream> #include <cstdio> #include <cstring> using namespace std; char s1[1005],s2[1005]; int main() { int T; cin>>T; int len1,len2; for(int cas=1;cas<=T;cas++) { getchar(); gets(s2); len1=strlen(s1); len2=strlen(s2); int n,i,j; int change[30][30]={0}; cin>>n; for(i=0;i<n;i++) { getchar(); char a,b; scanf("%c %c",&a,&b); change[a-'a'][b-'a']=1;//打下一个转换表 } int flag=0;//标记 j=0;// 控制s2的下标 for(i=0;i<len1;i++) { if(j==len2)//s2全部遍历完毕 break; if(s1[i]==s2[j]) { j++; continue; } while(s1[i]!=s2[j]) { if(j==len2)//s2遍历到最后一个,却没有使s2转换成和s1一样 { flag=1;//标记 break; } if(change[s2[j]-'a'][s1[i]-'a']==1)//查看转换表 { j++; break; } else j++;//直接删除 } } cout<<"Case #"<<cas<<": "; if(flag) cout<<"unhappy"<<endl; else cout<<"happy"<<endl; } return 0; }
View Code
相关文章推荐
- jade模板引擎(一)
- ASP.NET login控件
- 编译原理(九) LR(0)文法分析法(算法描述和C++代码实现)
- Leetcode题解(五)
- 杭电校赛(游乐场)
- C语言_指针函数
- <拦截>所有调用某方法的地方--黑魔法
- 计算机如何表示浮点数(小数)
- windows复制文件到Linux或Windows,有关FTP的配置与使用
- 计算机世界的道(C/ASM)生一(OS),一生二(API),二生万象(MFC/COM)——学包装技术的程序员将来会损失比较大,因为不了解本质,一旦包装过时就会被淘汰
- poj Palindrome 3974 (字符串&manacher)
- bash 命令行编辑
- 简单验证码识别
- sqlldr默认字符串最大长度修改和ctl文件的格式
- 在Navicat premium上创建的SQL Server数据库,实现用PHP连接(即php连接微软MSSQL)
- 面向对象分析
- 屏幕空间实时非平面反射
- 第6章 传输层
- opencar模板 opencartchina
- 设计一个算法找到数组中两个元素相加等于指定数的所有组合