📜  门| GATE CS 2008 |第44章

📅  最后修改于: 2021-06-28 21:06:59             🧑  作者: Mango

子集和问题定义如下。给定一组n个正整数,S = {a1,a2,a3,…,an}和正整数W,是否存在S个子集,其元素总和为W?解决此问题的动态程序使用具有n行和W + 1列的二维布尔数组X。 X [i,j],1 <= i <= n,0 <= j <= W,当且仅当存在元素的总和为j的{a1,a2,…,ai}的子集时,才为TRUE。以下哪一项对2 <= i <= n和ai <= j <= W有效?
(A) X [i,j] = X [i – 1,j] VX [i,j -ai]
(B) X [i,j] = X [i – 1,j] VX [i – 1,j – ai]
(C) X [i,j] = X [i – 1,j] VX [i,j – ai]
(D) X [i,j] = X [i – 1,j] VX [i -1,j – ai]答案: (B)
说明: X [I,j](2 <= i <= n和ai <= j <= W),如果满足以下任一条件,则为true
1)不包括ai的权重之和等于j,即X [i-1,j]为真。
2)包括ai的权重之和等于j,即X [i-1,j-ai]为真,则我们得到(j – ai)+ ai为j。
这个问题的测验