wildcard 질문요~

  • gs12037
    gs12037

    대체 어느 부분이 틀린지 모르겠어요.

    #include <stdio.h>
    #include <string>
    #include <algorithm>
    using namespace std;
    int cache[110][110],test,n,cnt;
    char temp[110];
    string W,S,ans[600];
    int com(string i,string j){
        return i<j;
    }
    bool matchMemoized(int w,int s){
        int& ret=cache[w][s];
        if (ret!=-1) return ret;
        while(s<S.size() && w<W.size() && (W[w]=='?' || W[w]==S[s])){
            w++;
            s++;
        }
        if (w==W.size()) return ret=(s==S.size());
        if (W[w]=='*')
            if (matchMemoized(w+1,s) || (s<S.size() && matchMemoized(w,s+1))) return ret=1;
        return ret=0;
    }
    int main(){
        int i,j;
        scanf("%d",&test);
        for (i=1;i<=test;i++){
            scanf("%s",temp);
            W=temp;
            scanf("%d",&n);
            for (j=1;j<=n;j++){
    //          memset(cache,-1,sizeof(cache));
                for (int p=0;p<102;p++)
                    for (int q=0;q<102;q++) cache[p][q]=-1;
                scanf("%s",temp);
                S=temp;
                if (matchMemoized(0,0)) ans[++cnt]=temp;
            }
        }
        sort(ans+1,ans+cnt+1,com);
        for (i=1;i<=cnt;i++) printf("%s\n",ans[i].c_str());
        return 0;
    }
    

    10년 전
5개의 댓글이 있습니다.
  • Kureyo
    Kureyo

    코드가 제대로 보이지를 않아서 확인을 못하겠네요. edit눌러서 코드를 어떻게 붙여넣는지 방법을 확인해보고 수정해주세요.


    10년 전 link
  • gs12037
    gs12037

    수정했습니다 ㅠ


    10년 전 link
  • Kureyo
    Kureyo

    마지막에 전체 답안을 정렬하는것이 아니라 각 test case마다 정렬을 해서 출력해야할거같습니다 @_@;


    10년 전 link
  • Signin
    Signin

    네 Kureyo 님 말씀대로 고치면 잘 됩니다 :)


    10년 전 link
  • gs12037
    gs12037

    으엉으 그렇군요


    10년 전 link
  • 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.