簡體   English   中英

找到非空子集 S 的數量,使得 min(S) + max(S) <= K

[英]Find the number of non-empty subsets S such that min(S) + max(S) <= K

對於給定的整數向量和整數K ,找到非空子集S的數量,使得min(S) + max(S) <= K

例如,對於K = 8和向量[2, 4, 5, 7] ,解為 5: ([2], [4], [2, 4], [2, 4, 5], [2, 5]) 時間復雜度應該是 O(n^2)。

在算法方面:正如您已經說過的,有一個(基本)解決方案,我們可以計算所有子集; 但是迭代子集具有指數復雜性。

我們可以優化計數:在示例中考慮集合S=[1,2,3,4,5,6] ,我們想要計算包含16所有子集。 1到6之間有4個項目; 並且我們正在計算的所有子集將包含或不包含任何[2,3,4,5] 由於它們是 4 個項目,因此有2^4不同的子集。

所以對於解決方案; 您可以遍歷數組(復雜度N )並選擇最小值; 迭代以下項目並選擇最大值(再次復雜度N ); 並計算ij之間的子集數量(它們是2^n )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM