public class QuanPaiLie {
static void permute(String s)
{
permute("",s);
}
public static void main(String args[])
{
permute("","abcd");
}
static void permute(String prefix, String str)
{
if(str.length() == 0)
System.out.println( prefix );
else
{
// System.out.println("----"+ prefix );
for(int i = 0; i < str.length(); i++)
permute(prefix+str.charAt(i), str.substring(0,i)+str.substring(i+1,str.length()));
}
}
}
#include <iostream>
#include <cassert>
#include <ctime>
#include <iterator>
using namespace std;
void swap(char *str, int i, int j)
{
char temp = str[i];
str[i] = str[j];
str[j] = temp;
}
/************************************************************************/
/* 函数功能:递归求全排列 */
/************************************************************************/
void GetQuanPaiLie(char *str, int current, int length)
{
if(current == length-1)
cout<<str<<endl; // 去掉if else 的话看看打出的结果,也许可以知道为什么在current==length-1时输出
else
{
for (int i=current; i<length; i++) //遍历所有情况
{
swap(str, current, i);
GetQuanPaiLie(str, current+1, length);//str也变了
swap(str, current, i);
}
}
}
int main()
{
char str[] = "abc";
GetQuanPaiLie(str, 0, 3);
}