On nous donne un ensemble de Fruits. Chaque fruit a un prix et une teneur en vitamines ; nous avons associé le fruit à la paire ordonnée . Maintenant, nous devons organiser ces fruits de telle sorte que la liste triée contienne les prix en ordre croissant et le contenu en vitamines en ordre décroissant.
Exemple 1 : et .
Si nous organisons la liste de manière à ce que tous les prix soient en ordre croissant et le contenu en vitamines en ordre décroissant, les listes valides sont les suivantes:
Dans les listes ci-dessus, je souhaite choisir la liste de taille maximale. Si plusieurs listes ont une taille maximale, nous devons choisir la liste de taille maximale dont la somme des prix est la moins élevée. La liste qui doit être choisie dans l'exemple ci-dessus est .
Exemple 2 : et
La réponse à cet exemple d'instance est .
Jusqu'à présent, c'est ce que j'ai fait:
- Trier la liste d'origine par ordre croissant de prix;
- Trouver toutes les sous-séquences de la liste triée;
- Vérifiez si la sous-séquence est valide et comparez toutes les sous-séquences valides.
Cependant, cela prend un temps exponentiel; comment puis-je résoudre ce problème plus efficacement?