说实在的在比赛时看错了题意,一直对最后一段的描述不是很清楚。闲话少说;
题意:给一个主串,再一个副串,问主串中有多少个子串和副串的的规律相同,即相邻的相等大于小于,用过的就不能再用了。
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 }