Je n'ai pas trouvé de question similaire à ce sujet. Il s'agit d'une question Facebook de dernière minute :
On vous donne un anneau de boîtes. Chaque boîte porte un nombre non négatif et peut être dupliquée.
Ecrivez une fonction/algorithme qui vous indique l'ordre dans lequel vous sélectionnez les cases, qui vous donnera la somme maximale.
Le problème, c'est que si vous sélectionnez une case, elle est retirée de l'anneau, tout comme les deux cases voisines (à droite et à gauche de celle que vous avez sélectionnée).
donc si j'ai un anneau de
{10 3 8 12}
Si je choisis 12, 8 et 10 seront détruits et il vous restera 3.
Le maximum sera de sélectionner 8 d'abord puis 10, ou 10 d'abord puis 8.
J'ai essayé de réassigner aux boîtes leur valeur en prenant sa propre valeur et en soustrayant ensuite les deux à côté d'elle comme coût.
Donc l'ancien anneau est {10 3 8 12}
le nouvel anneau est {-5, -15, -7, -6}, et je vais choisir le plus élevé.
Cependant, cela ne fonctionne absolument pas si vous avez {10, 19, 10, 0}, vous devriez prendre les deux 10, mais l'algorithme prendra le 19 et le 0.
Aidez-moi, s'il vous plaît.
Il s'agit très probablement de programmation dynamique, mais je ne sais pas comment.
L'anneau peut être de n'importe quelle taille.