《程序员面试宝典》求取第二个字符串在第一个字符串中的连接次序---递归算法

// test_max.cpp : 定义控制台应用程序的入口点。

#include "stdafx.h"
#include <iostream>
using namespace std;

int* s;

void printIndex(string str1,string str2,int* s)
{
	int i=0;
	for(i=0;i<str2.length();i++)
	{
		while(s[i]<str1.length()  &&  str1.at(s[i])!=str2.at(i) )			//注意判断的顺序
		{
			s[i]++;
		}
	}
	
	for(i=0;i<str2.length();i++)
	{
		if(s[i]==str1.length())
		{
			return;
		}
	}
	for(i=0;i<str2.length();i++)
	{
		printf("%d ",s[i]);
	}
	printf("\n");

	
	for(i=str2.length()-1;i>=0;i--)
	{
		for(int j=i+1;j<str2.length();j++)
		{
			s[j]=0;
		}
		s[i]++;
		if(s[i]<str1.length())
		{
			printIndex(str1,str2,s);
		}
		else
		{
			return;
		}
	}
	return;
}

int main()
{
	string str1="abdbcc";
	string str2="abcd";
	s=(int*)malloc(str2.length()*sizeof(int));
	memset(s,0,str2.length()*sizeof(int));
	printIndex(str1,str2,s);

	system("pause");
	return 0;
}
《程序员面试宝典》求取第二个字符串在第一个字符串中的连接次序---递归算法_第1张图片

你可能感兴趣的:(递归算法,程序员面试宝典)