11. 两个字符串 char* a, char* b,输出 b 在 a 中的位置次序。
void output_postion(const char* a, const char* b);
如:a = "abdbcc" b = "abc"
b 在 a 中的位置次序为
014
015
034
035
解释:
#include <iostream>
#include <string>
#include <list>
using namespace std;
void abstring(string a, int ai, string b, int bi, list<int>& l)
{
if(bi == b.length())
{
for(list<int>::iterator it = l.begin(); it!= l.end();it++)
{
cout<<*it;
}
cout<<endl;
}
else
{
for(int i = ai; i < a.length(); i++)
{
if(a[i] == b[bi])
{
l.push_back(i);//如果相等,把序号加入到链表l
abstring(a,i+1,b,bi+1,l);//递归
l.pop_back();//回溯
}
}
}
}
void output_position(const char* a, const char* b)
{
string as = a;
string bs = b;
list<int> l;//用来保存 相等的序号
abstring(a,0,b,0,l);
}
int main(int argc, char** argv) {
char* a = "abdbcc";
char* b = "abc";
output_position(a,b);
return 0;
}