資料結構與演算法分析(java語言描述) 部分課後習題答案 第一章

樑大寶發表於2014-08-12

1.6 編寫帶有下列宣告的例程:

      public void permute ( String str );

private void permute ( char[] str, int low, int high );

      第一個例程是個驅動程式,它呼叫第二個例程並顯示String str 中的字元的所有排列。如果str是“abc”, 那麼輸出的串則是abc, acb, bca, cab 和 cba。第二個例程使用遞迴。


答案如下:

public static void permute(String str) {
		
		char[] strArray = str.toCharArray();
		permute(strArray, 0, strArray.length - 1);
	}</span>

public static void permute(char[] list, int low, int high) {
		int i;
		if (low == high) {
			String cout = "";
			for (i = 0; i <= high; i++)
				cout += list[i];
			System.out.println(cout);
		} else {
			for (i = low; i <= high; i++) {
				char temp = list[low];
				list[low] = list[i];
				list[i] = temp;
				permute(list, low + 1, high);
				temp = list[low];
				list[low] = list[i];
				list[i] = temp;
			}
		}
	}</span>

未完,待續。。。

相關文章