crypto5 wrote:АццкоМото wrote:crypto5 wrote:А вы программу "с конца" попробуйте написать. Что бы перебирать с конца вам нужно будет нагенерить все конечные состояния и от них делать перебор и получится тоже самое.
Ну или писать более сложную логику допущений как это делает ваш мозг.
Во-вторых, нагенерить конечные состояния - не очень сложно, когда знаешь, что в каждом состоянии должен быть минимум один сосуд, который либо до краев, либо пуст.
Кстати для абстрактных чисел это не факт.
Что, простите, именно не факт для абстрактных чисел? На каждом шаге мы по определению из какого-то сосуда выливаем в другой либо всю воду, либо столько, сколько влезет. В первом случае мы получаем гарантированно пустой сосуд, во втором - полный до краев. Третьего не дано.
Если вам кажется, что для произвольных емкостей может быть трудно нагенерить все конечные состояния, то это тоже не верно. Нам нужно получить какое-то количество воды, отличное от емкости любого из сосудов. Максимум три варианта, где оно может получиться. Для каждого из них - либо в одном из двух сосудов пусто, а вся остальная вода в другом, либо в одном из сосудов - до краев. 12 вариантов по максимуму, часть из них отсеивается из-за невозможности
Если же хочется, чтобы и количество сосудов было произвольным - другой разговор, но тогда и ваше решение не работает