折花岁月

博客园 首页 新随笔 联系 订阅 管理

说实在的在比赛时看错了题意,一直对最后一段的描述不是很清楚。闲话少说;

题意:给一个主串,再一个副串,问主串中有多少个子串和副串的的规律相同,即相邻的相等大于小于,用过的就不能再用了。

 1 #include <stdio.h>
 2 #include <string.h>
 3 #include <stdlib.h>
 4 int A[100100],B[100100];
 5 int find(int i,int m)
 6 {
 7     int j;
 8     for(j = 1;j <= m - 1;j ++)
 9     {
10         if  ( ( A[i] == A[i + 1]  && B[j] == B[j + 1] ) || (A[i] <  A[i + 1] && B[j] <  B[j + 1] ) ||(A[i] >  A[i + 1] && B[j] >  B[j + 1] )
11                      )
12                i ++;
13         else
14          return 0;
15     }
16     return 1;
17 }
18 int main()
19 {
20     int n,m,k,i,j,ans;
21     while(scanf("%d %d %d",&n,&m,&k)!=EOF)
22     {
23         ans = 0;
24         for(i = 1;i <= n;i ++)
25           scanf("%d",&A[i]);
26         for(i = 1;i <= m;i ++)
27           scanf("%d",&B[i]);  
28         for(i = 1;i <= n - m + 1; )
29         {
30             if( find(i,m) )
31             {
32                 ans ++;
33                 i = i + m;
34             }
35             else i ++;//敲的时候忘了,后来加上了。
36         }
37         printf("%d\n",ans);
38     }
39     return 0;
40 }
View Code

 

posted on 2013-09-24 16:08  iyi  阅读(177)  评论(0编辑  收藏  举报