uva 475 - Wild Thing(字符串处理)

来源:互联网 发布:mac pro电脑截屏快捷键 编辑:程序博客网 时间:2024/04/29 11:50

题目链接:uva 475 - Wild Thing

题目大意:给定一个字符串的通配,然后给定一些字符集,问说有哪些字符满足匹配,如果没有一个字符串匹配的话,当前这组数据就任何东西也不输出,包括换行。
解题思路:递归去匹配即可,注意这种数据。

#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int maxn = 50;int n, m;char s[maxn], t[maxn];bool dfs (int l, int r) {    if (l > n && r > m)        return true;    if (l > n || r > m)        return false;    if (s[l] == '*') {        while (s[l+1] == '*')            l++;        if (s[l+1] == t[r] && dfs(l + 1, r))            return true;        return dfs(l, r + 1);    } else {        if (s[l] != t[r])            return false;        return dfs(l + 1, r + 1);    }    return false;}bool judge () {    n = strlen(s);    m = strlen(t);    return dfs(0, 0);}int main () {    int cas = 0;    while (gets(s)) {        int ret = 0;        while (gets(t) && t[0] != '\0') {            if (judge()) {                if (ret++ == 0) {                    if (cas)                        printf("\n");                    printf("MATCHES FOR THE PATTERN: %s\n", s);                }                printf("%s\n", t);            }        }        if (ret)            cas++;    }    return 0;}
0 0
原创粉丝点击