Python
def perm(s, first, num):
if first == num - 1:
print s
return
for i in range(first, num):
s[i], s[first] = s[first], s[i]
perm(s,first+1, num)
s[i], s[first] = s[first], s[i]
s = ['A','B','C','D']
perm(s, 0, len(s))
Java
import java.util.Arrays;
public class Perm {
public static void main(String[] args){
char[] ch = {'A', 'B', 'C', 'D'};
perm(ch, 0, ch.length);
}
private static void perm(char[] ch, int first, int num){
if (first == num - 1){
System.out.println(Arrays.toString(ch));
return ;
}
for (int i = first; i < num; i++) {
swap(ch, i, first);
perm(ch, first+1, num);
swap(ch, first, i);
}
}
private static void swap(char[] ch, int i, int j){
char temp;
temp = ch[i];
ch[i] = ch[j];
ch[j] = temp;
}
}
全排列方法2:
#Python 2.7
def perm2(s, prefix):
if not s:
print prefix
else:
for i in range(len(s)):
perm2(s[1:], prefix + s[0])
s = s[1:] + s[0]
perm2("ABCD", "")