/*
描述:输入两个字符串,比如abdbcc和abc,输出第二个字符串在第一个字符串中的链接次序,即输出125,126,145,146
*/
#include <iostream>
#include<string.h>
#include<list>
using namespace std;
list<int>list1;
void findLink(const char*p1,const char*p2,int i,int j)
{
if(!p1[i]||!p2[j])
return ;
if(p2[j]==p1[i]&&!p2[j+1])
{
for(list<int>::iterator it=list1.begin();it!=list1.end();it++)
{
cout<<*it<<" ";
}
cout<<i+1<<endl;
}
if(p1[i]==p2[j])
{
list1.push_back(i+1);
findLink(p1,p2,i+1,j+1);
list1.pop_back();
}
findLink(p1,p2,i+1,j);
}
int main() {
char p[10]="abdbccd";
char q[10]="abc";
findLink(p,q,0,0);
return 0;
}
//别人写的算法,因为不知道原创是谁,所以木有写。sorry!