面试宝典第三版第八章8.2正确程序

来源:互联网 发布:深入分析java web pdf 编辑:程序博客网 时间:2024/05/20 07:13

今天看面试宝典,发现8.2面试例题1有误,所以自己又写了个小程序测试了一下是对的了。

题目:输入两个字符串,比如abdbcc和abc,输出第二个字符串在第一个字符串中的连接顺序。即输出125,126,145,146。

void print(char *p,char *s,int *print_arr,int p_len,int s_len,int print_num,int p_start_num,int s_start_num){int pStartNum = p_start_num;int sStartNum = s_start_num;int printNum = print_num;if (printNum == s_len){for(int i = 0 ; i < s_len;i++){cout << *(print_arr+i);cout << " ";}cout << endl;return;}for(int i = pStartNum;i < p_len;i++){if(*(p+i) == *(s+s_start_num)){print_arr[print_num] = i+1;print(p,s,print_arr,p_len,s_len,print_num+1,i+1,sStartNum+1);//其实是利用深度回溯的思想来构建一个完整的序列。}}}void connect(char *p,char *s){int p_len = strlen(p);int s_len = strlen(s);int *print_arr = new int[s_len];print(p,s,print_arr,p_len,s_len,0,0,0);}//这里省略了检查p,s的输入是否合法的部分int main(){char p[] = "abdbcca";char s[] = "abc";connect(p,s);return 0;}


0 0
原创粉丝点击