题目:http://acm.hdu.edu.cn/showproblem.php?pid=4150
代码:
#include<stdio.h> #include<string.h> using namespace std; char a[1000005]; char b[5]; int main() { int t ; scanf("%d",&t); while(t--) { scanf("%s%s",a,b); int stra=strlen(a); int strb=strlen(b); int ans=0; for(int i=0; i<stra;i++) { // printf("i=%d\n",i); for(int j=0; j<strb; j++) { if(a[i]==b[j]) i++; else { if(a[i]!=b[0]) i=i-j; else i--; // printf("%d\n",i); break; } if(j==strb-1) { i--; //printf("%d\n",i); ans++; } } } printf("%d\n",ans); } }
#include<iostream> #include<cstdio> #include<string.h> using namespace std; int is(char a[],char b[],int len) { int i; for(i=0;i<len;i++) { if(a[i]!=b[i])return 0; } return 1; } int main() { int T; scanf("%d",&T); char str[1000001];char a[6],b[6]; while(T--) { scanf("%s%s",str,b); int length=strlen(b); int i; int sum=0; for(i=0;str[i]!=0;i++) { int j; for(j=i;j<i+length;j++) { a[j-i]=str[j]; } a[j-i]=0; if(strcmp(a,b)==0) { sum++; i+=length-1; } } printf("%d\n",sum); } }
这道题的测试数据可以去CF的625B去查,看看哪不对。http://codeforces.com/problemset/status/625/problem/B
cin超时,但有一种简单的方法。
#include<bits/stdc++.h> using namespace std; string s,s1; int n,m,n1,x,t,y; main() { cin>>s>>s1; x=s.find(s1); for(; x>=0;) { t++; x=s.find(s1,x+s1.size()); } cout<<t; }
#include<cstdio> #include<cstring> char s1[100005],s2[40]; int main() { scanf("%s%s",s1,s2); int ans=0,len2=strlen(s2); char *now=s1; while(1) { char *p=strstr(now,s2); if(p==NULL) break; else { ans++; now=p+len2; } } printf("%d\n",ans); return 0; }