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

ZOJ Problem Set - 3643 Keep Deleting

时间:2015-03-29 12:01:09      阅读:98      评论:0      收藏:0      [点我收藏+]

标签:

题目大意

给出a和b串,a是b串的子串,如果b串有连续的a串,那么就将b串的a串删除,问删除多少次;

题目分析:

打比赛的时候没敲出来,后来想到用栈的思想去模拟就行,网上还有用KMP+栈去做的,没有KMP,也能AC,一会去学习一下KMP算法

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<iostream>
 4 #include<cmath>
 5 #include<algorithm>
 6 #define INF
 7 #define maxn
 8 using namespace std;
 9 char a[1000],b[1000000],c[1000000];
10 int main()
11 {
12 
13     while(scanf("%s %s",a,b)!=EOF)
14     {
15         int len_a=strlen(a);
16         int len_b=strlen(b);
17         int fro=0,ed=0;
18         int sum=0;
19         for(int i=len_b-1; i>=0; i--)
20         {
21             c[fro++]=b[i];
22             if(fro<len_a) continue;
23             int j,t;
24             for(j=fro-1,t=0; j>=0&&t<len_a; j--,t++)
25             {
26                 if(c[j]!=a[t])
27                     break;
28             }
29             if(t==len_a)
30             {
31                 sum++;
32                 fro=fro-len_a;
33             }
34 
35         }
36         printf("%d\n",sum);
37     }
38     return 0;
39 }

 

ZOJ Problem Set - 3643 Keep Deleting

标签:

原文地址:http://www.cnblogs.com/tsw123/p/4375359.html

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