Минимальное движение для перемещения продуктов [закрыто] ⇐ C++
-
Anonymous
Минимальное движение для перемещения продуктов [закрыто]
По сути, склады XXXX выстроены в круг, вы можете начать с любого склада, перемещаясь по часовой стрелке или против часовой стрелки, направление должно оставаться неизменным на протяжении всех оставшихся ходов.< /p>
На каждом складе хранятся определенные предметы. Цель состоит в том, чтобы собрать лишние товары с одних складов и доставить их другим, нуждающимся в них, чтобы в итоге на каждом складе хранилось одинаковое количество товаров (гарантировано).
Расстояние между 2 соседними складами равно 1, а Стоимость каждой транспортировки продукта — это расстояние, на которое перемещается продукт. Например, скажем, у нас есть 6->6->6->3->4 (связанные с первыми 6), мы можем оптимально начать с первых 6 и собрать 1 предмет, повторить то же самое для следующих 2 складов и доставить от 2 до 3 и от 1 до 4.
В итоге на каждом складе 5 товаров, а общая стоимость равна 1 + 2 + 3 + 1 = 7. Это всего лишь возможное движение по часовой стрелке, оптимальная стоимость должна учитывать также направление против часовой стрелки и возвращать минимальную стоимость. Я подумал, что это похоже на заправочную станцию LC 134, но не смог найти решение без использования грубой силы.
Пример:
[3_products, 4_products, 6_xxx, 6_xxx, 6_xxx] (индекс основан на 1, а не на 0)
3 -> 4 -> 6 -> 6 -> 6 (в цикле)
вариант 1:
начать с 3-го индекса по часовой стрелке
5-й -> 1-й, стоимость = 1
4-й -> 1-й, стоимость = 2
3-й -> 2-й, стоимость = 4
в каждом контейнере 5, total_cost = 1+2+4 = 7
вариант 2:
начните с 5-го индекса, против часовой стрелки
3-й -> 1-й, стоимость = 2
4-й -> 1-й, стоимость = 3
5-й -> 2-й, стоимость = 3
в каждом контейнере 5, total_cost = 2+3+3 = 8
7
Подробнее здесь: https://stackoverflow.com/questions/790 ... e-products
По сути, склады XXXX выстроены в круг, вы можете начать с любого склада, перемещаясь по часовой стрелке или против часовой стрелки, направление должно оставаться неизменным на протяжении всех оставшихся ходов.< /p>
На каждом складе хранятся определенные предметы. Цель состоит в том, чтобы собрать лишние товары с одних складов и доставить их другим, нуждающимся в них, чтобы в итоге на каждом складе хранилось одинаковое количество товаров (гарантировано).
Расстояние между 2 соседними складами равно 1, а Стоимость каждой транспортировки продукта — это расстояние, на которое перемещается продукт. Например, скажем, у нас есть 6->6->6->3->4 (связанные с первыми 6), мы можем оптимально начать с первых 6 и собрать 1 предмет, повторить то же самое для следующих 2 складов и доставить от 2 до 3 и от 1 до 4.
В итоге на каждом складе 5 товаров, а общая стоимость равна 1 + 2 + 3 + 1 = 7. Это всего лишь возможное движение по часовой стрелке, оптимальная стоимость должна учитывать также направление против часовой стрелки и возвращать минимальную стоимость. Я подумал, что это похоже на заправочную станцию LC 134, но не смог найти решение без использования грубой силы.
Пример:
[3_products, 4_products, 6_xxx, 6_xxx, 6_xxx] (индекс основан на 1, а не на 0)
3 -> 4 -> 6 -> 6 -> 6 (в цикле)
вариант 1:
начать с 3-го индекса по часовой стрелке
5-й -> 1-й, стоимость = 1
4-й -> 1-й, стоимость = 2
3-й -> 2-й, стоимость = 4
в каждом контейнере 5, total_cost = 1+2+4 = 7
вариант 2:
начните с 5-го индекса, против часовой стрелки
3-й -> 1-й, стоимость = 2
4-й -> 1-й, стоимость = 3
5-й -> 2-й, стоимость = 3
в каждом контейнере 5, total_cost = 2+3+3 = 8
7
Подробнее здесь: https://stackoverflow.com/questions/790 ... e-products
Мобильная версия