阿里巴巴筆試題 求陣列中和為給定數所有的組合

2021-05-26 15:48:18 字數 648 閱讀 9811

一、問題描述

給定乙個數t,以及n個整數,在這n個數中找到加和為t的所有組合,例如t=4,n=6這6個數為[4,3,2,2,1,1],這樣輸出就有4個不同的組合它們的加和為4:4,3+1,2+2,and 2+1+1。請設計乙個高效演算法實現這個需求。

二、解題思路

先將資料按從大到小進行排序,然後使用回溯法遍歷所有可能。注意去掉重複的結果。

三、**實現

#includeusing namespace std;

int a[100]=;

bool x[100];//標記第i個元素是否已經使用

int n=6;//元素個數

int t=4;//目標和

int sum;//當前和

int cmp(const void *a,const void *b)

void backtrace(int n)

{ if(sum>t)//當前和大於t

return ;

if(sum==t)//當前和等於t,輸出結果

{for(int j=0;j

阿里巴巴筆試題

1 有乙個虛擬儲存系統,若程序在記憶體中佔3頁 開始時記憶體為空 若採用先進先出 fifo 頁面淘汰演算法,當執行如下訪問頁號序列後1,2,3,4,5,1,2,5,1,2,3,4,5,會發生多少缺頁?a 7 b 8 c 9d 10 2 設有乙個順序棧s,元素s1 s2 s3 s4 s5 s6依次進棧...

阿里巴巴筆試題

題意 給定一串數字 判斷是否存在這三個元素,它們將數字串分為四個子串,其中每個子串的數字之和均相同 該3個元素不納入計算 要求時間複雜度和空間複雜度均不能超過o n 思路 奇妙的利用了單調性,列舉第一段的和,第一段的和確定了,那麼接下來的2,3,4段的和就都確定了,什麼單調性呢?就是i右移,j,k都...

阿里巴巴筆試題

1 有乙個虛擬儲存系統,若程序在記憶體中佔3頁 開始時記憶體為空 若採用先進先出 fifo 頁面淘汰演算法,當執行如下訪問頁號序列後1,2,3,4,5,1,2,5,1,2,3,4,5,會發生多少缺頁?a 7 b 8 c 9d 10 2 設有乙個順序棧s,元素s1 s2 s3 s4 s5 s6依次進棧...