給定陣列int a = ,列印出它的所有組合。即對m >= 1 && m <=n,從a中任取i個數並成一組的集合的並。
例如:m = 2時,從a中得到的集合為12,13,1n.........23,24,25.........(n-1)n
看到題目我們就可以聯想到使用遞迴來解決。我們可以將從a中取出i個數化為以下幾步:
從a中取出第乙個字元,從餘下的n-1個字元中再選取m-1個字元,求它的組合;
不使用a的第乙個字元,從餘下的n-1個字元中再選取m個字元,求它的組合;
這兩個問題均為遞迴問題。
注:開始時我總想通過for迴圈來控制那些元素選過還是沒選過,再回溯求解,但發現涉及的記錄狀態太多,回溯時總是出錯,走上了歧路。
對m >= 1 && m <=n,分別求其組合
int a = ;
for (int i = 1; i <= a.length; i++)
求選取m個元素的組合
public static void getcombination(int a, int m, int start,
arraylistresult)
system.out.println("");
return;
} if (start < a.length)
return;
}
劍指offer 陣列
資料是最簡單的資料結構,它佔據一塊連續的記憶體並按照順序儲存資料。建立陣列時,首先指點陣列的容量大小,然後根據大小分配記憶體。缺點 空間效率不高。經常有空閒的區域滅有得到充分利用。優點 時間效率很高。可以根據時間效率高的特點,來實現簡單的雜湊表 把陣列的下標設為雜湊表的鍵值,陣列中的每乙個數字設為雜...
劍指offer 陣列
public class 03 陣列中的重複數字 swap number,number i i return 1 交換 public void swap int number,int i,int j public class 03 陣列中的重複數字 return 1 public intfindre...
劍指offer 陣列
問題描述 在乙個二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。function find target,array return false 問題描述 在乙個長度...