Como obtenho uma lista de todas as combinações possíveis de preços de produtos para atingir um custo desejado?

Suponha que eu tenha uma lista de três produtos (A, B C). Cada produto tem um preço. Dado um custo total, desejo encontrar todas as combinações de produtos possíveis iguais exatamente a esse custo.

té agora eu tentei coisas como:

for price in product:
    ret = []
    for i in range(int(totalCost / price), -1, -1):
        ret.append(i)
        for c in range(1, len(products)+1, 1):
            ret.append(int(products[c-1][1]/products[c][1]))

E aqui é onde eu fico preso. Isso me fornecerá uma lista de possibilidades, mas incluirá apenas os produtos posteriores (além do local atual) à lista. Não será necessário incluir o começo e, portanto, me dar todas as possibilidade

O que preciso fazer para obter todas as possibilidades?

questionAnswers(2)

yourAnswerToTheQuestion