输出全排列_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > 输出全排列

输出全排列

 2013/12/9 15:26:10  MouseLearnJava  程序员俱乐部  我要评论(0)
  • 摘要:本文将给出一个使用回溯法实现全排列的程序。publicclassPermutations{publicvoidpermute(Stringvalue,intstartIndex,intendIndex){if(startIndex==endIndex){System.out.printf("%s\n",value);}else{for(intcurrIndex=startIndex;currIndex<=endIndex;currIndex++){value=swap(value
  • 标签:输出

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


class="java">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);

	}
}


测试程序如下:

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
发表评论
用户名: 匿名