しゅつりょくぜんはいち


本論文では,遡及法を用いて全配列を実現するプログラムを与える.
public class Permutations {

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

		if (startIndex == endIndex) {
			System.out.printf("%s
", 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); } }
テスト手順は次のとおりです.
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