序列遍历hdu 4545(水题,不是DP)
发一下牢骚和主题无关:
这道题看到有人用最长公共子序列去做,其实完整用不上,直接遍历一遍就好了,就是一个水题。
#include<stdio.h> #include<string.h> #define N 1005 int main() { char s1[N],s2[N]; int mark[27][27]; int i,j; int flag; int T; char x,y; scanf("%d",&T); int count=1; while(T--) { getchar(); gets(s1); gets(s2); int n; scanf("%d",&n); memset(mark,0,sizeof(mark)); while(n--) { getchar(); scanf("%c %c",&x,&y); mark[x-'a'+1][y-'a'+1]=1; } int ln1,ln2; ln1=strlen(s1); ln2=strlen(s2); i=0; j=0; flag=0; for(i=0;i<ln1;i++) { if(j==ln2) break; if(s1[i]==s2[j]) { j++; continue; } while(s2[j]!=s1[i]) { if(j==ln2) { flag=1; break; } if(mark[s2[j]-'a'+1][s1[i]-'a'+1]==1) { j++; break; } else j++; } } if(!flag) printf("Case #%d: happy\n",count++); else printf("Case #%d: unhappy\n",count++); } return 0; }
文章结束给大家分享下程序员的一些笑话语录: 某程序员对书法十分感兴趣,退休后决定在这方面有所建树。花重金购买了上等的文房四宝。一日突生雅兴,一番磨墨拟纸,并点上了上好的檀香,颇有王羲之风 范,又具颜真卿气势,定神片刻,泼墨挥毫,郑重地写下一行字:hello world.