翁恺C语言程序设计进阶_第一周编程题
题目内容:
题目说起来很简单,你会读到两个字符串,每个字符串占据一行,每个字符串的长度均小于10000字符,而且第一个字符串的长度小于第二个字符串的。你的程序要找出第一个字符串在第二个字符串中出现的位置,输出这些位置,如果找不到,则输出-1。
注意,第一个字符的位置是0。
注意,第一个字符串在第二个字符串中的位置可能不止一处。
注意,字符串中可能含有空格。
注意,两个字符串的长度一定大于0。
输入格式:
两个字符串,一行一个。
输出格式:
第一个字符串在第二个字符串中出现的位置,按照从小到到的顺序排列,每个数字后面有一个空格。
如果在第二个字符串中找不到第一个字符串,则输出-1。
输入样例:
abba
ababbba abbabbabbabbaacc
输出样例:
8 11 14 17
本人代码
1 #include <iostream> 2 #include <string.h> 3 using namespace std; 4 5 int main() 6 { 7 char a[10000], b[10000]; 8 int num[5000]; 9 int x = 0; 10 gets(a); 11 gets(b); 12 13 for(int i = 0; i<strlen(b); i++) 14 { 15 int flag = 1; 16 for(int j = 0; j<strlen(a); j++) 17 { 18 if(a[j] != b[i+j]) 19 { 20 flag = 0; 21 break; 22 } 23 } 24 if(flag) 25 { 26 num[x] = i; 27 x++; 28 } 29 } 30 if(x == 0) 31 { 32 cout << -1; 33 } 34 else 35 { 36 for (int i = 0; i < x; i++) { 37 cout << num[i] <<" "; 38 } 39 } 40 return 0; 41 }

浙公网安备 33010602011771号