-1
我正在做一個練習,我堅持檢查是否有一種方法可以找到排序數組中的非連續序列,並將其加總到給定的整數n中。給定一個整數數組和整數n,如何找到一個與n相加的子數組(非連續的)?
例如:
int[] a = {1, 2, 4, 5, 10};
int n = 20;
整數那筆20在位置0,2,3,4
我怎麼能這樣做?
我正在做一個練習,我堅持檢查是否有一種方法可以找到排序數組中的非連續序列,並將其加總到給定的整數n中。給定一個整數數組和整數n,如何找到一個與n相加的子數組(非連續的)?
例如:
int[] a = {1, 2, 4, 5, 10};
int n = 20;
整數那筆20在位置0,2,3,4
我怎麼能這樣做?
您應該遍歷集合的所有子集。 對於N設置,你可以有Math.pow(2,N)
子集。爲此,您可以從1到Math.pow(2,N)
進行迭代,並嘗試找到比特值爲1的那些位置的某些元素,並且如果子集合爲K,則會找到子集。
你怎麼知道有這樣一個序列? –
數組是否被假定爲排序? –
@FrankPuffer是的,它被排序 – steexd