程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> hdu 4545(水題,不是DP)

hdu 4545(水題,不是DP)

編輯:C++入門知識

這道題看到有人用最長公共子序列去做,其實完全用不上,直接遍歷一遍就行了,就是一個水題。


[cpp]
#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; 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved