#include "stdafx.h"
#include <iostream>
#include <string>
#include <stdlib.h>
#include <vector>
#include <deque>
using namespace std;
deque<string> pailie(char* s)
{
int num = (int)strlen(s);
deque<string> d,dd,result;
for (int i = 0; i < num; ++i)
{
dd.push_back(string(s+i,s+i+1));
result.push_back(string(s+i,s+i+1));
}
deque<string>::iterator it1;
for (int k = 0; k < num-1; ++k)
{
d=dd;
dd.clear();
for (int j = 0; j < num; ++j)
{
for (it1 = d.begin(); it1 != d.end(); ++it1)
{
if ((*it1).find(s[j]) == string::npos)
{
dd.push_back(*it1+s[j]);
result.push_back(*it1+s[j]);
}
}
}
}
return result;
}
int _tmain(int argc, _TCHAR* argv[])
{
deque<string> dd,d;
char s[]="abcd";
d = pailie(s);
deque<string>::iterator it = d.begin();
for (; it != d.end(); ++it)
{
cout <<*it<<endl;
}
getchar();
return 0;
}
组合非递归实现
最新推荐文章于 2024-06-07 11:12:53 发布