2010-05-12 5 views
1

Pour mon programme, j'essaie d'aider l'utilisateur et de réduire sa charge de travail.Essayer toutes les permutations

Il existe quatre nombres d'entrée. Il y a aussi une quantité indéterminée de nombres, ils peuvent être appliqués aussi.

Par exemple, ils quatre numéros d'entrée pourraient être {4,7,3,2} et les chiffres peuvent être appliqués à sont {4,9,23}

Le résultat devrait être: 4 (entrée) a été appliqué à 4, laissant les ensembles ressemblant à: {0,7,3,2} et ensuite 7,2 (entrée) sont appliqués à 9 en laissant les ensembles ressemblant à: {0,0,3,0} et { 0,0,23} et parce que 3 ou toute autre permutation dont 3 ne correspond pas à 23, 3 reste.

Comment est-ce que je ferais ceci?

+0

Sont-ils traités de gauche à droite, ou peut-on appliquer 4,3,2 à 9 en laissant les ensembles ressemblant à {0,7,0,0} {4,0,23}? –

+0

Peu importe. L'un ou l'autre est correct. – Malfist

Répondre

2

Voulez-vous dire que vous voulez trouver les éléments de l'ensemble d'entrée qui somme à une valeur dans l'autre ensemble? Si oui, alors je crois que c'est une instance de Subset Sum Problem, qui est un cas particulier du Knapsack Problem.

Le total du sous-ensemble est NP-complet. Si les ensembles sont grands, le mieux que vous pourrez faire est une solution approximative.

+0

J'avais peur que ça ne soit pas complet. Comme c'est un petit ensemble, je suppose que je l'ai forcé. – Malfist

Questions connexes