Vous n'avez pas trouvé de réponse similaire à ce sujet. Ceci est un tour final Question Facebook:Facebook interview: découvrez l'ordre qui donne la somme maximale en sélectionnant des cases avec le numéro dans un anneau, lorsque les deux à côté de lui est détruit
Vous recevez un anneau de boîtes. Chaque boîte a un nombre non négatif sur elle, peut être en double. Ecrivez une fonction/un algorithme qui vous indiquera l'ordre dans lequel vous avez sélectionné les boîtes, ce qui vous donnera la somme maximale. La capture est, si vous sélectionnez une boîte, elle est retirée de l'anneau, ainsi que les deux boîtes à côté de celle-ci (à droite et à gauche de celui que vous avez sélectionné).
donc si j'ai un anneau de
{10 3 8 12}
Si je sélectionne 12, 8 et 10 seront détruits et il ne vous reste 3.
Le maximum sélectionnerez 8 d'abord puis 10, ou 10 d'abord puis 8.
J'ai essayé de ré-affecter les boîtes leur valeur en prenant sa propre valeur, puis soustraire les deux à côté de est le coût.
Ainsi l'ancien anneau est {10 3 8 12}
le nouvel anneau est {-5, -15, -7, -6}, et je choisirai le plus élevé.
Cependant, cela ne fonctionne pas vraiment si vous avez {10, 19, 10, 0}, vous devez prendre les deux 10s, mais l'algorithme prendre le 19 et 0.
Aide s'il vous plaît?
Il est très probable que la programmation dynamique, mais je ne sais pas comment.
La bague peut être de n'importe quelle taille.
C'était déjà fait ..., et ce n'était pas mon interview :) – webE
J'ai dit que c'était une question d'interview finale de Facebook, je n'ai jamais dit que c'était mon. :) – webE
Semblable à cette [question] (http://stackoverflow.com/questions/6048025/problem-false-mirrors-can-you-help-me-to-solve). – Ante