带通配符的字符串匹配(动态规划)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了带通配符的字符串匹配(动态规划)相关的知识,希望对你有一定的参考价值。

OJ地址:http://noi.openjudge.cn/ch0206/6252/

 1 #include<string>
 2 #include<cstdio>
 3 #include<iostream>
 4 using namespace std;
 5 string A,B;
 6 bool Judge(int a,int b);
 7 void Init();
 8 int main()
 9 {
10 //    cin>>A>>B;//A with ? or *
11     getline(cin,A);getline(cin,B);
12     Init();
13     cout<<(Judge(A.length()-1,B.length()-1)?"matched":"not matched");    
14     return 0;
15 }
16 void Init()
17 {
18     string Temp("");
19     for(int i=0;i<A.length();i++){
20         if(Temp[Temp.length()-1]==*&&A[i]==*) continue;
21         Temp=Temp+A[i];
22     }
23     A=Temp;
24 }
25 bool Judge(int a,int b)
26 {
27     //if(A==B) return true;
28     if(A.empty()&&B.empty()) return true;
29     if(A[a]==*){
30         if(a==0) return true;
31         int n=b;
32         /*do{
33             if(n==-1) return false;
34             if(Judge(a-1,n)) return true;
35         }while(n--);*/
36         while(n>=0){
37             if(Judge(a-1,n)) return true;
38             n--;
39         }
40         return false;
41     }
42     if(A[a]==B[b]||A[a]==?){
43         if(a==0&&b==0) return true;
44         else if(a==0||b==0){
45             if(a==1&&A[0]==*) return true;
46             return false;
47         }
48         else return Judge(a-1,b-1);
49     }
50     return false;
51 }

 

以上是关于带通配符的字符串匹配(动态规划)的主要内容,如果未能解决你的问题,请参考以下文章

395,动态规划解通配符匹配问题

44. 通配符匹配-动态规划-困难

动态规划法解通配符匹配算法题

Go 刷 LeetCode 系列:动态规划通配符

动态规划:leetcode题库第四十四题

Leetcode44. 通配符匹配(动态规划)