#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;
}组合非递归实现
最新推荐文章于 2025-05-27 11:22:19 发布
本文介绍了一个使用 C++ 实现的字符串全排列算法。通过递归地构建字符串的所有可能排列,该算法能够有效地生成输入字符串的所有可能组合。文章详细展示了如何初始化排列队列,并通过迭代方式逐步构建更长的字符串直至完成所有字符的排列。


3192

被折叠的 条评论
为什么被折叠?



