Donc pour une question de pratique, nous sommes censés concevoir un algorithme de programmation dynamique qui est une variation de 0/1 problème ... au fond de chaque sac article provient de 4 sources différentes, et cet élément peut être pris à partir de seulement l'une des sources ..Résoudre une variation de 0/1 Knapsack (source multiple pour les éléments, chaque élément peut être sélectionné à partir de l'une des sources)
A savoir,
S1={(d_k, b_k) | 1 ≤ k ≤ n},
S2={(d_k, b_k) | n + 1 ≤ k ≤ 2n},
S3={(d_k, b_k) | 2n + 1 ≤ k ≤ 3n},
S4 = {(d_k, b_k) | 3n + 1 ≤ k ≤ 4n}
pour n = 10
, si vous sélectionnez i = 16
à mettre, cela signifie que vous ne sélectionnez pas 6, 26 or 36
...
Pouvez-vous m'aider à résoudre ce problème et à concevoir l'équation de récurrence?
C'est une très bonne réponse claire, mais il me semble que ça va un peu trop loin de faire juste les devoirs de * Wonder * pour lui (ou elle). Incidemment, vous avez un bug: vous utilisez * n * pour désigner à la fois "le nombre d'éléments que nous envisageons d'ajouter" et "le nombre total d'éléments". Appelez l'ancien * k *, par exemple, votre "3n" devrait être "k + 2n", etc. –
Merci, bonne réponse –
@Gareth: Merci d'avoir trouvé mon bug. J'ai édité ma réponse et l'ai réparée. En ce qui concerne la résolution des devoirs de Wonder: j'ai en effet révélé la réponse finale de la partie difficile, mais seulement après avoir pleinement expliqué la logique derrière elle. Il pourrait trouver la solution sans lire la dernière partie de ma réponse. Pourtant, je pense que c'était correct de lui donner la réponse finale afin qu'il puisse s'assurer qu'il l'a bien fait. Je crois qu'il a passé du temps à réfléchir et qu'il n'a pas simplement copié la solution. – snakile