Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 24909 Accepted Submission(s):
15362
1 #include <iostream> 2 #include <cstring> 3 #include <string> 4 #include <algorithm> 5 using namespace std; 6 int n; 7 char a[1005]; 8 char b[1005]; 9 int nxt[1005]; 10 int la, lb; 11 void get_nxt() 12 { 13 int i = 0; 14 int j = -1; 15 nxt[0] = -1; 16 while (i < lb) 17 { 18 if (j == -1 || b[i] == b[j]) nxt[++i] = ++j; 19 else j = nxt[j]; 20 } 21 } 22 int main() 23 { 24 while (cin >> a) 25 { 26 if (a[0] == '#') break; 27 else cin >> b; 28 la = strlen(a); 29 lb = strlen(b); 30 get_nxt(); 31 int i = 0, j = 0; 32 int s = 0; 33 while (i < la) 34 { 35 if (j == -1 || a[i] == b[j]) 36 { 37 i++; 38 j++; 39 } 40 else j = nxt[j]; 41 if (j == lb) 42 { 43 s++; 44 j = 0;//不是j=nxt[j],因为不能重复 45 } 46 } 47 cout << s << endl; 48 } 49 return 0; 50 }
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 24909 Accepted Submission(s):
15362
1 #include <iostream> 2 #include <cstring> 3 #include <string> 4 #include <algorithm> 5 using namespace std; 6 int n; 7 char a[1005]; 8 char b[1005]; 9 int nxt[1005]; 10 int la, lb; 11 void get_nxt() 12 { 13 int i = 0; 14 int j = -1; 15 nxt[0] = -1; 16 while (i < lb) 17 { 18 if (j == -1 || b[i] == b[j]) nxt[++i] = ++j; 19 else j = nxt[j]; 20 } 21 } 22 int main() 23 { 24 while (cin >> a) 25 { 26 if (a[0] == '#') break; 27 else cin >> b; 28 la = strlen(a); 29 lb = strlen(b); 30 get_nxt(); 31 int i = 0, j = 0; 32 int s = 0; 33 while (i < la) 34 { 35 if (j == -1 || a[i] == b[j]) 36 { 37 i++; 38 j++; 39 } 40 else j = nxt[j]; 41 if (j == lb) 42 { 43 s++; 44 j = 0;//不是j=nxt[j],因为不能重复 45 } 46 } 47 cout << s << endl; 48 } 49 return 0; 50 }