bueno hay diferentes formas de hacerlo pero me suena mas a un problema de programacion dinamica. si sabes recursion dale una vuelta al tema.
aqui esta la formula q expresa ese algoritmo pero tienes q implementarlo
http://mathworld.wolfram.com/SubsetSumProblem.html