面接宝典第3版第8章8.2正しいプログラム


今日面接の宝典を見て、8.2面接の例題1が間違っていることを発見して、だから自分でまた小さいプログラムを書いてテストしたのは正しいです.
タイトル:abdbccとabcのような2つの文字列を入力し、最初の文字列における2番目の文字列の接続順序を出力します.すなわち、出力125126145146である.
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;
}