整數陣列的組合問題

2021-06-25 18:10:37 字數 1026 閱讀 9308

2023年9月16日,美團南京站南京郵電大學筆試題目之一。

大致的題意是這樣的:

有乙個元素各不相同的整數陣列,輸入元素的所有組合,長度由大到小。例如:[1, 2, 3, 4],依次輸出1234,123,134,234,12,13,14,23,24,1,2,3,4

思路:1、設輸出的組合的長度為m(m<=n)

2、把陣列分為兩個部分:第乙個數和後面的m-1個數

3、如果組合裡包含第乙個數,則下一步在剩餘的n-1個數里選取m-1個字元;如果不包含第乙個數,則下一步在剩餘的m-1個數裡面選取m個數

把n個數中求長度為m的組合分解成:求n-1個數裡面長度為m-1個數的組合,以及從n-1個數裡面求長度為m的組合的兩個子問題,用遞迴解決。另外,可以使用vector或者statck資料結構儲存當前的結果,本文採用的是vector。

// totallen:陣列長度,curindex:遞迴過程中的「第乙個」元素在陣列中的位置,

// lengthleft:組合中需要新增的元素個數,res:存放當前組合的元素

void combine(int *a, int totallen, int curindex, int lengthleft, vector&res)

// 若遞迴過程中希望作為「第乙個元素」的位置已超過陣列的長度,則退出

if (curindex == totallen)

return;

res.push_back(a[curindex]);

combine(a, totallen, curindex + 1, lengthleft - 1, res);

res.pop_back();

combine(a, totallen, curindex + 1, lengthleft, res);

}void combinationofint(int *a, int len)

int main(void)

; combinationofint(a, 5);

return 0;

}

整數陣列加1

leetcode的一道演算法題 給定乙個由整數組成的非空陣列所表示的非負整數,在該數的基礎上加一。最高位數字存放在陣列的首位,陣列中每個元素只儲存單個數字。你可以假設除了整數 0 之外,這個整數不會以零開頭。示例 1 輸入 1,2,3 輸出 1,2,4 解釋 輸入陣列表示數字 123。示例 2 輸入...

MVC自動繫結整數陣列

昨天恰好遇到這個問題,stackoverflow上已經有人回答過了,拿過來在這裡做個筆記。當然下面的例子可以修改,我比較喜歡使用imodelbinder。public class intarraymodelbinder defaultmodelbinder return value attempte...

已排序的整數陣列相關查詢返回索引問題

對於陣列的應用大家一定不會陌生,今天要介紹的就是兩種有關陣列中對於指定元素的查詢問題.題目要求 示例 解題思路 1 定義左右指標left和right left 0 right n 1 2 當left小於right的時候,採用二分查詢的方法查詢指定資料,如果找到了就將left和right存起來,沒找到...