Subset

También podría gustarte

Está en la página 1de 2

El algoritmo es correcto ya que encuentra todos los subconjuntos del conjunto

S y los suma hasta encontrar, o no, el subconjunto que sume K.

Demostracin, siendo S = {1, 3, 4, 5,6} y K es 8

1
0
1
1
8

1
0
1
1

Y as hasta completar todos los subconjuntos o se encuentre K.

Algoritmo:

public static void main (String[] args) throws java.lang.Exception{


List<Integer> S = new ArrayList();
S.add(1);
S.add(3);
S.add(0);
S.add(0);
System.out.print(subsetSum(S,5,0));
}

public static boolean subsetSum(List<Integer> S, int K, int sum){


if (K == sum){
return true;
}
if (S.size() == 0){
return false;
}

boolean retVal = false;


for (int i = 0 ; i < S.size() ; i++){
List<Integer> tmp = new ArrayList<Integer>(S);
tmp.remove(i);
retVal = retVal || subsetSum(tmp,K,sum + S.get(i));
}

return retVal;
}

También podría gustarte