Jedes Mal stephan202 zu beantworten, benutzen Sie einen Eimer mit 10 Liter füllen, Sie haben 10 weniger Liter in Ihrem Quelleimer.
Jedes Mal, wenn Sie einen Eimer mit 2 Litern füllen, haben Sie 2 Liter weniger in Ihrem Eimer.
Jedes Mal, wenn Sie einen Eimer mit 50 Litern füllen, haben Sie 50 Liter weniger in Ihrem Eimer.
Können wir das verallgemeinern?
Jedes Mal, wenn Sie einen Eimer mit N Litern füllen, haben Sie N weniger Liter in Ihrem Quelleimer.
Sie können nicht weniger als null Liter in Ihrem Quell-Bucket haben. Was Sie also tatsächlich füllen, ist der kleinere Wert im Quell-Bucket und die Kapazität des Ziel-Buckets.
Da das ist der Betrag, den Sie ausgefüllt,
Jedes Mal, wenn Sie einen Eimer mit N Liter füllen, müssen Sie min (N, source_bucket_capacity) weniger Liter in der Quell Eimer.
Während Sie im Quelleimer Wasser haben, füllen Sie weiterhin die Eimer. Halten Sie an, wenn der Quell-Bucket leer ist oder Sie keine Ziel-Buckets mehr haben.
So
- die Quelle Eimer einrichten.
- richten Sie eine Liste der Ziel-Buckets ein.
- während des Source-Eimer nicht leer ist, und Sie haben nicht gefüllte Eimer in der Zielliste
- die nächsten Ziel Eimer bekommen.
- füllen es min (N, source_bucket_capacity)
- Dekrement der Quelle bucket durch min (N, source_bucket_capacity)