2007-03-09

全排列算法

题目大致是这样滴:
有1, 2, 2, 3, 4, 5, 这六个字符, 打印出它们的所有排列顺序.
想了老半天, 结果就是这样滴:

public class SnippetTest
{
private void perm(char[] a, boolean[] f, String r)
{
for(int i = 0; i < f.length; i++)
{
if(!f[i])
{
f[i] = true;
if(r.length() == 5)System.out.println(r + a[i]);
perm(a, f, r + a[i]);
f[i] = false;
}
}
}

public static void main(String[] args)
{
char[] a = new char[]{'1', '2', '2', '3', '4', '5'};
boolean[] f = new boolean[6];//default is false
String r = "";
new SnippetTest().perm(a, f, r);
}
}

嗯....相当简洁的说.而且也是可以扩展的, 赞自己一个, 太TNND牛了

No comments: