正數陣列的最小不可組成和

2021-10-11 22:07:32 字數 1504 閱讀 6272

正數陣列的最小不可組成和

給定乙個正數陣列arr,其中所有的值都為整數,以下是最小不可組成和的概念

請寫函式返回正數陣列arr的最小不可組成和

時間複雜度為o(n

×∑i=

1nar

ri

)o(n \times \sum_^n arr_i)

o(n×∑i

=1n​

arri

​),額外空間複雜度為o(∑

i=1n

arri

)o(\sum_^n arr_i)

o(∑i=1

n​ar

ri​)

輸入描述:

第一行乙個整數n,表示陣列長度。

接下來一行n個整數表示陣列內的元素。

輸出描述:

輸出乙個整數表示陣列的最小不可組成和

示例1輸入

3

2 3 9

輸出
4
示例2

輸入

3

1 2 4

輸出
8
說明
3 = 1 + 2

5 = 1 + 4

6 = 2 + 4

7 = 1 + 2 + 4

備註:

1 ⩽n

⩽100

1 \leqslant n \leqslant 100

1⩽n⩽10

0n<(∑

i=1n

arri

)⩽10

4n < (\sum_^n arr_i) \leqslant 10^4

n<(∑

i=1n

​arr

i​)⩽

104題解:

動態規劃,設 f[j] 表示 j 能否被 arr 的子集相加得到,如果 arr[0…i] 上的子集累加和可以得到 k ,那麼 arr[0…i+1] 上的子集必然可以累加出 k+arr[i+1],後面的就是類似揹包問題轉移方程,具體見**。

**:

#include

using

namespace std;

const

int n =

100;

const

int m =

10001

;bool f[m]

;int a[n]

;int

main

(void

) f[0]

=true

;for

(int i =

0; i < n;

++i )

}int ret = sum +1;

for(

int i = mn; i <= sum;

++i )

}return0*

printf

("%d\n"

, ret)

;}

正數陣列的最小不可組成和

給定乙個正整數陣列arr,其中所有的值都為整數,以下是最小不接組成和的概念 arr 1,2,3,4 返回11 arr 2,3,4 返回7 public intbaoli intarr for int i min 1 i integer.max value i return0 public void ...

正數陣列的最小不可組成和

題目 給定乙個正數陣列arr,其中所有的值都是整數,以下是最小不可組成和的概念 把arr每個子集內的所有元素加起來會出現很多值,其中最小的記為min,最大的記為max。在區間 min,max 上,如果有數不可以被arr某乙個子集相加得到,那麼其中最小的那個數就是arr的最小不可組成和。在區間 min...

正數陣列的最小不可組成和 高階問題

正數陣列的最小不可組成和 高階問題 給定乙個正數陣列arr,其中所有的值都為整數,以下是最小不可組成和的概念 請寫函式返回正數陣列arr的最小不可組成和 保證1一定出現過!要求 時間複雜度為o n logn o nlogn o nlog n 額外空間複雜度為o 1 o 1 o 1 輸入描述 第一行乙...