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