输出全排列

本文将给出一个使用回溯法实现全排列的程序。


public class Permutations {

public void permute(String value, int startIndex, int endIndex) {

if (startIndex == endIndex) {
System.out.printf("%s\n", value);
} else {
for (int currIndex = startIndex; currIndex <= endIndex; currIndex++) {

value = swap(value, startIndex, currIndex);

permute(value, startIndex + 1, endIndex);

/** 回溯 */
value = swap(value, startIndex, currIndex);
}
}
}

private String swap(String value, int idxOne, int idxTwo) {
char[] charArray = value.toCharArray();
char temp = value.charAt(idxOne);
charArray[idxOne] = charArray[idxTwo];
charArray[idxTwo] = temp;
return new String(charArray);

}
}


[b]测试程序如下:[/b]

public class Main {

public static void main(String[] args) {
String value = "ABCD";
new Permutations().permute(value, 0, value.length()-1);
}

}


运行结果:
ABCD
ABDC
ACBD
ACDB
ADCB
ADBC
BACD
BADC
BCAD
BCDA
BDCA
BDAC
CBAD
CBDA
CABD
CADB
CDAB
CDBA
DBCA
DBAC
DCBA
DCAB
DACB
DABC
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值