您的位置:首页 > 其它

hdu 4545 魔法串

2013-10-08 23:10 267 查看
思路:假设小西字符串为str1[i] , 小明的字符串为str2[j] 遍历一次str1[i] ,查看对于每一个str1[i] 是否有str2[j] == str1[i] 或者 hash[str2[j]][str1[i]] == 1若都存在则输出happy, 否则输出unhappy.

注意:每一个输入后要加一个getchar(); 这点wrong了好几次

#include <iostream>
using namespace std;

#define N 1100

char str1
;
char str2
;

int m_hash[27][27];

int main()
{
int i, j,t, n1, n2, m, k = 1;
char a, b;
scanf("%d", &t);
while(t--)
{
getchar();
gets(str1);
gets(str2);
scanf("%d", &m);
memset(m_hash, 0, sizeof(m_hash));

for (i = 0;i < m; ++i)
{
getchar();
scanf("%c %c", &a, &b);
m_hash[a - 'a'][b - 'a'] = 1;
}
n1 = strlen(str1);
n2 = strlen(str2);
for(i = 0, j = 0;i < n1 && j < n2; )
{
if (str1[i] == str2[j])
{
++j;
++i;
continue;
}
else
{

while(j < n2)
{
if (str1[i] == str2[j] || m_hash[str2[j] - 'a'][str1[i] - 'a'] == 1)
{
++j;
++i;
break;
}
else
{
++j;
}
}
}
}

if (i == n1)
{
printf("Case #%d: happy\n", k++);
}
else
{
printf("Case #%d: unhappy\n", k++);
}

}

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