hdu 4545 魔法串

来源:互联网 发布:js设置div隐藏显示 编辑:程序博客网 时间:2024/04/30 15:22

链接:点击打开链接

题意就不要说啦。可以用贪心,也可以用DP,说用贪心,其实就是一遍模拟过去,两个字符串比较,遇到不相等的就删掉,遇到可以变换就变换,看最后是不是相等就可以啦。

注意一个字符可以变成几个,例如:d b  d a;

#include<iostream>#include<stdio.h>#include<string.h>using namespace std;char str1[1010],str2[1010],a[220];int main(){    int t,i,j,len1,len2,m,k,x;    char b,c;    scanf("%d",&t);    for(x=1;x<=t;x++){    //    memset(str1,'\0',sizeof(str1));    //    memset(str2,'\0',sizeof(str2));            getchar();        scanf("%s %s",str1,str2);        len1=strlen(str1);        len2=strlen(str2);        scanf("%d",&m);        //getchar();        for(i=0;i<m;i++)        {            getchar();        scanf("%c %c",&b,&c);        a[2*i]=b;        a[2*i+1]=c;        }        i=0;        for(j=0;j<len2;j++){            if(str1[i]==str2[j])              i++;              else                if(str1[i]!=str2[j]){                for(k=0;k<2*m;k+=2){                    if(str2[j]==a[k]){                     if(str1[i]==a[k+1]){                            i++;                            break;                            }                       }                    }                }                if(i==len1)                break;            }            if(i==len1)            printf("Case #%d: happy\n",x);            else            printf("Case #%d: unhappy\n",x);        }        return 0;    }