Lightoj--1338--Hidden Secret!(模拟)
2016-04-30 21:04
435 查看
Hidden Secret!
Submit Status
Description
In this problem you are given two names, you have to find whether one name is hidden into another. The restrictions are:
1. You can change some
uppercase letters to lower case and vice versa.
2. You can add/remove spaces
freely.
3. You can permute the
letters.
And if two names match exactly, then you can say that one name is hidden into another.
Input
Input starts with an integer T (≤ 100), denoting the number of test cases.
Each case starts with two lines. Each line contains a name consists of upper/lower case English letters and spaces. You can assume that the length of any name is between 1 and 100 (inclusive).
Output
For each case, print the case number and "Yes" if one name is hidden into another. Otherwise print "No".
Sample Input
3
Tom Marvolo Riddle
I am Lord Voldemort
I am not Harry Potter
Hi Pretty Roar to man
Harry and Voldemort
Tom and Jerry and Harry
Sample Output
Case 1: Yes
Case 2: Yes
Case 3: No
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
char s1[1010],s2[1010];
int ch[1010];
int main()
{
int t,k=1;
scanf("%d",&t);
getchar();
while(t--)
{
memset(s1,0,sizeof(s1));
memset(s2,0,sizeof(s2));
memset(ch,0,sizeof(ch));
gets(s1);
gets(s2);
for(int i=0;i<strlen(s1);i++)
{
if(s1[i]==' ') continue;
int op;
if(s1[i]>='a'&&s1[i]<='z')
{
op=s1[i]-'a';
ch[op]++;
}
else if(s1[i]>='A'&&s1[i]<='Z')
{
op=s1[i]-'A';
ch[op]++;
}
}
bool f=false;
for(int i=0;i<strlen(s2);i++)
{
if(s2[i]==' ') continue;
int op;
if(s2[i]>='a'&&s2[i]<='z')
{
op=s2[i]-'a';
if(ch[op]!=0)
ch[op]--;
else f=true;
}
else if(s2[i]>='A'&&s2[i]<='Z')
{
op=s2[i]-'A';
if(ch[op]!=0)
ch[op]--;
else
f=true;
}
}
if(!f) printf("Case %d: Yes\n",k++);
else printf("Case %d: No\n",k++);
}
return 0;
}
Hidden Secret!
Time Limit: 1000MS | Memory Limit: 32768KB | 64bit IO Format: %lld & %llu |
Description
In this problem you are given two names, you have to find whether one name is hidden into another. The restrictions are:
1. You can change some
uppercase letters to lower case and vice versa.
2. You can add/remove spaces
freely.
3. You can permute the
letters.
And if two names match exactly, then you can say that one name is hidden into another.
Input
Input starts with an integer T (≤ 100), denoting the number of test cases.
Each case starts with two lines. Each line contains a name consists of upper/lower case English letters and spaces. You can assume that the length of any name is between 1 and 100 (inclusive).
Output
For each case, print the case number and "Yes" if one name is hidden into another. Otherwise print "No".
Sample Input
3
Tom Marvolo Riddle
I am Lord Voldemort
I am not Harry Potter
Hi Pretty Roar to man
Harry and Voldemort
Tom and Jerry and Harry
Sample Output
Case 1: Yes
Case 2: Yes
Case 3: No
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
char s1[1010],s2[1010];
int ch[1010];
int main()
{
int t,k=1;
scanf("%d",&t);
getchar();
while(t--)
{
memset(s1,0,sizeof(s1));
memset(s2,0,sizeof(s2));
memset(ch,0,sizeof(ch));
gets(s1);
gets(s2);
for(int i=0;i<strlen(s1);i++)
{
if(s1[i]==' ') continue;
int op;
if(s1[i]>='a'&&s1[i]<='z')
{
op=s1[i]-'a';
ch[op]++;
}
else if(s1[i]>='A'&&s1[i]<='Z')
{
op=s1[i]-'A';
ch[op]++;
}
}
bool f=false;
for(int i=0;i<strlen(s2);i++)
{
if(s2[i]==' ') continue;
int op;
if(s2[i]>='a'&&s2[i]<='z')
{
op=s2[i]-'a';
if(ch[op]!=0)
ch[op]--;
else f=true;
}
else if(s2[i]>='A'&&s2[i]<='Z')
{
op=s2[i]-'A';
if(ch[op]!=0)
ch[op]--;
else
f=true;
}
}
if(!f) printf("Case %d: Yes\n",k++);
else printf("Case %d: No\n",k++);
}
return 0;
}
相关文章推荐
- Axure制作ipad原型
- 10个值得深思的 PHP 面试问题
- Boost.log的应用
- bootstrap表单验证插件 经验记录 与RSA加密事件配合修改
- leetcode151: symmetric tree
- 1048. 数字加密(20)
- C经典 快速实现加减乘除
- 第二次打字测试
- jquery操作DOM元素的复习
- PHP限制网页只能在微信内置浏览器中查看并显示
- Java循环练习:百鸡问题
- 时隔三年,重回代码之路
- 构建之法04
- servlet、jsp跳转(传值)总结及URL传参数
- linux内存源码分析 - 内存回收(lru链表)
- OSI七层模型与TCP/IP模型
- Unity3D 关于运动模型
- javascript 抽奖
- 游程幅值对数据_恢复图像块
- hdu 3247 AC自动+状压dp+bfs处理