В 15-литровые ведра налито соответственно 1, 2, 3, 4 и 5 литров воды. Разрешается перелить из любого ведра в любое другое вдвое больше воды, чем в нем уже есть. Какое наибольшее количество воды можно
собрать в одном ведре?
Здравствуйте, nikholas, Вы писали:
N>В 15-литровые ведра налито соответственно 1, 2, 3, 4 и 5 литров воды. Разрешается перелить из любого ведра в любое другое вдвое больше воды, чем в нем уже есть. Какое наибольшее количество воды можно N>собрать в одном ведре?
Здравствуйте, nikholas, Вы писали:
N>В 15-литровые ведра налито соответственно 1, 2, 3, 4 и 5 литров воды. Разрешается перелить из любого ведра в любое другое вдвое больше воды, чем в нем уже есть. Какое наибольшее количество воды можно N>собрать в одном ведре?
Здравствуйте, dimok@, Вы писали:
D>Здравствуйте, nikholas, Вы писали:
N>>В 15-литровые ведра налито соответственно 1, 2, 3, 4 и 5 литров воды. Разрешается перелить из любого ведра в любое другое вдвое больше воды, чем в нем уже есть. Какое наибольшее количество воды можно N>>собрать в одном ведре?
D>Что мешает собрать 15?
D>1 -> 3 D>2 -> 4 D>и их содержимое слить в 5
Тогда сразу 80 можно сделать. Правда в других ведрах будут отрицательные значения
Здравствуйте, dimok@, Вы писали:
D>Здравствуйте, denisko, Вы писали:
D>>Тогда сразу 80 можно сделать. Правда в других ведрах будут отрицательные значения
D>Сарказм? Какое условие нарушено?
9 < 10
Здравствуйте, nikholas, Вы писали:
N>В 15-литровые ведра налито соответственно 1, 2, 3, 4 и 5 литров воды. Разрешается перелить из любого ведра в любое другое вдвое больше воды, чем в нем уже есть. Какое наибольшее количество воды можно N>собрать в одном ведре?
Здравствуйте, nikholas, Вы писали:
N> Разрешается перелить из любого ведра в любое другое вдвое больше воды, чем в нем уже есть.
Как же криво сформулировано это условие
Решил исходить из формулировки, что
Если в паре вёдер u и v литров воды, то после переливания в них будет 3u и (v-2u) литров соответственно. При этом 3u ≤ 15, а (v-2u) ≥ 0, иначе переливание недопустимо. Другие способы переливания недопустимы.
N>Какое наибольшее количество воды можно собрать в одном ведре?
12, если так сливать:
Здравствуйте, nikholas, Вы писали:
N>В 15-литровые ведра налито соответственно 1, 2, 3, 4 и 5 литров воды. Разрешается перелить из любого ведра в любое другое вдвое больше воды, чем в нем уже есть. Какое наибольшее количество воды можно N>собрать в одном ведре?
А поскольку это этюд для программистов, то — код на питоне
# -*- coding : utf-8 -*-def perelit_g(v) :
''' переливает из элементов кортежа (упорядоченного), порождая новые кортежи '''
n = len(v)
for i in range(0,n) :
if v[i] > 0 :
for j in range(i+1,n) :
if v[i]*2 <= v[j] :
w = list(v)
w[i], w[j] = v[i] + v[i]*2, v[j] - v[i]*2
yield tuple(sorted(w))
def perelit(v) :
''' множество порождённых кортежей '''return set(perelit_g(v))
def perelits(vv) :
''' для множества исходных кортежей - множество порождённых '''
ww = map(perelit, vv) # список множеств кортежей
uu = reduce(lambda x,y:x|y, ww, set()) # объединённое множество кортежейreturn uu
v0 = (1,2,3,4,5) # стартовый кортеж
vv = {v0} # множество кортежей, из которых будем порождать новые
vvall = vv # множество всех встреченных кортежейwhile vv : # пока есть из чего порождать
vv = perelits(vv)
vv -= vvall # вычтем ранее встреченные
vvall |= vv # запомним новыеprint'-----------'for s in sorted(vv) :
print' '.join(map(str,s))
print'==========='for s in sorted(vvall) :
print' '.join(map(str,s))
print'==========='
m = max(max(s) for s in vvall)
print'maximum maximorum =', m
Здравствуйте, nikholas, Вы писали:
N>В 15-литровые ведра налито соответственно 1, 2, 3, 4 и 5 литров воды. Разрешается перелить из любого ведра в любое другое вдвое больше воды, чем в нем уже есть. Какое наибольшее количество воды можно N>собрать в одном ведре?
У меня получилось 14.
1. 5-ое переливаем в 4-ое -> 1, 2, 3, 8, 1
2. 3-е в 1-ое -> 2, 2, 2, 8, 1
3. 4-ое в 5-ое -> 2, 2, 2, 7, 2
4. 1-ое во 2-ое -> 0, 4, 2, 7, 2
5. 5-ое в 3-е -> 0, 4, 4, 7, 0
6. 2-ое в 3-е -> 0, 0, 8, 7, 0
7. 3-е в 4-ое -> 0, 0, 1, 14, 0
Здравствуйте, debugx, Вы писали:
D>Здравствуйте, nikholas, Вы писали:
N>>В 15-литровые ведра налито соответственно 1, 2, 3, 4 и 5 литров воды. Разрешается перелить из любого ведра в любое другое вдвое больше воды, чем в нем уже есть. Какое наибольшее количество воды можно N>>собрать в одном ведре? D>У меня получилось 14. D>1. 5-ое переливаем в 4-ое -> 1, 2, 3, 8, 1 D>2. 3-е в 1-ое -> 2, 2, 2, 8, 1 D>3. 4-ое в 5-ое -> 2, 2, 2, 7, 2 D>4. 1-ое во 2-ое -> 0, 4, 2, 7, 2 D>5. 5-ое в 3-е -> 0, 4, 4, 7, 0 D>6. 2-ое в 3-е -> 0, 0, 8, 7, 0 D>7. 3-е в 4-ое -> 0, 0, 1, 14, 0
Разрешается перелить из любого ведра в любое другое вдвое больше воды
Здравствуйте, Vaako, Вы писали:
V>Разрешается перелить из любого ведра в любое другое вдвое больше воды
А вы решение прочитали? Там вроде все четко. Идея в том, что 7ка достижима за счет того, что мы выливаем из 8 в 1, так как имеем право удвоить 1. Ну а потом осталось удвоить 7ку. 15ка понятно почему не получится — это не удвоение.
N>Здравствуйте, Vaako, Вы писали:
V>>Разрешается перелить из любого ведра в любое другое вдвое больше воды
N>А вы решение прочитали? Там вроде все четко.
Там же решение другой задачи.
N> это не удвоение.
Удвоение — это когда переливается ровно столько воды сколько уже есть в целевом ведре.
А когда переливается в ведро вдвое больше воды — это утроение, а не удвоение.
W>Удвоение — это когда переливается ровно столько воды сколько уже есть в целевом ведре. W>А когда переливается в ведро вдвое больше воды — это утроение, а не удвоение.
И где же в том решении неправильный шаг?
Здравствуйте, Nuseraro, Вы писали:
W>>Удвоение — это когда переливается ровно столько воды сколько уже есть в целевом ведре. W>>А когда переливается в ведро вдвое больше воды — это утроение, а не удвоение. N>И где же в том решении неправильный шаг?
В том решении
каждый шаг неправильный :)
Ведь после каждого шага происходит удвоение объёма в каком-либо ведре, хотя разрешено лишь утраивать его. Это как с процентами — рост на 200% означает увеличение в три раза, а не в два. Так и тут, если перелили в ведро вдвое больше воды чем там уже было, то в нем окажется втрое больше воды чем до переливания.