Ваш алгоритм правильный.
Попробуйте доказать следующее по индукции по количеству пройденных остановок. После прохождения каждого водного места никакая другая стратегия не может сделать меньше остановок, а из тех, которые сделали такое же количество остановок, никакая другая стратегия не может оставить вас с большим количеством воды.
на 0стопы, все стратегии равны, поэтому доказать утверждение тривиально.
Если вы не пьете на остановке по этой стратегии, результат легко доказать.
Если вы это сделаетевыпить на остановке, исходя из того, что утверждение было верным на предыдущей остановке, вы можете доказать, что либо другая стратегия сделала больше остановок в прошлый раз (следовательно, они не впереди на остановках и не могут быть впереди на воде, так как вытолько что получил воду), иначе у другой стратегии тоже должна быть только вода (иначе у них закончится вода до следующей остановки).
Этого достаточно, чтобы заполнить индукционное доказательство.
Если вы боретесь с понятием того, что требуется для формального доказательства, и как их сделать, см. Как я делаю доказательства .Я также написал в блоге о своем опыте использования этого раздаточного материала здесь .