2016년 5월 10일 화요일

5015 - ls

알고스팟의 'WILDCARD' 문제에서 ? 가 패턴에 없는 문제이다. (하위호환...)
내용은 링크로 대체한다.

함께보기


#include <bits/stdc++.h>
using namespace std;

char s[101], p[101];
int slen, plen;

int dp[101][101];
int match(int i, int j){
    if(i >= plen) return j == slen;
    int& r = dp[i][j];
    if(r != -1) return r;
    if(p[i] == '*'){
        return r = (match(i+1, j) == 1 || match(i, j+1) == 1);
    }
    if(p[i] == s[j]) return r = match(i+1, j+1);
    return r = false;
}

int main(){
    int n;
    scanf("%s %d ", p, &n);
    plen = strlen(p);
    while(n--){
        memset(dp, -1, sizeof(dp));
        scanf("%s ", s);
        slen = strlen(s);
        if( match(0, 0) == 1 ) puts(s);
    }
    return 0;
}

댓글 없음:

게시글 목록