码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2016-05-28 18:57:08      阅读:198      评论:0      收藏:0      [点我收藏+]

标签:

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 }

 

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

标签:

原文地址:http://www.cnblogs.com/gzhonghui/p/5537911.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!