正數陣列的最小不可組成和
給定乙個正數陣列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
nar
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 輸入描述 第一行乙...