62,614
社区成员
发帖
与我相关
我的任务
分享
public class Arrange {
public static void main(String[] args) {
Arrange arrange = new Arrange();
List<Character> data = new ArrayList<Character>();
data.add('a');
data.add('b');
data.add('c');
data.add('d');
//输出A(n,n)的全排列
for(int i = 1; i <= data.size(); i++)
arrange.arrangeSelect(data,new ArrayList<Character>(),i);
}
/**
* 计算A(n,k)
*
* @param data
* @param target
* @param k
*/
public <E> void arrangeSelect(List<E> data,List<E> target, int k) {
List<E> copyData;
List<E> copyTarget;
if(target.size() == k) {
for(E i : target)
System.out.print(i);
System.out.println();
}
for(int i=0; i<data.size(); i++) {
copyData = new ArrayList<E>(data);
copyTarget = new ArrayList<E>(target);
copyTarget.add(copyData.get(i));
copyData.remove(i);
arrangeSelect(copyData, copyTarget,k);
}
}
}
a
b
c
d
ab
ac
ad
ba
bc
bd
ca
cb
cd
da
db
dc
abc
abd
acb
acd
adb
adc
bac
bad
bca
bcd
bda
bdc
cab
cad
cba
cbd
cda
cdb
dab
dac
dba
dbc
dca
dcb
abcd
abdc
acbd
acdb
adbc
adcb
bacd
badc
bcad
bcda
bdac
bdca
cabd
cadb
cbad
cbda
cdab
cdba
dabc
dacb
dbac
dbca
dcab
dcba