我在一家面包店工作,该面包店提供小麦,黑麦,大麦,谷物和法国面包,但是面包师有点奇怪-他以随机的顺序堆放面包,有时只剩下一些架子空着。
每天,同一位顾客进来,要求每条面包中的一块,但是棘手的是,他是个细菌菌,所以当我装满袋子时,我无法连续选择两个相邻架子上的面包。
在相邻的架子之间走需要一秒钟的时间。这是一家繁忙的商店;对于任何随机配置的面包,我想尽可能减少获取每个独特面包的时间。我可以在任何架子上开始和结束。
如果今天的订购量为W B W G F R W
,则可能的路径为0, 3, 5, 1, 4
,总共12秒钟:abs(3-0) + abs(5-3) + abs(1-5) + abs(4-1) = 12
(这1, 2, 3, 4, 5
是行不通的,因为面包是从相邻的架子上连续拾取的。)
如果为B W B G B F B R B W B F
,则可能的路径为1, 3, 5, 7, 10
,总共需要9秒钟。
经理总是确保有可能的解决方案,因此我不必担心会收到错误的输入。他通常将订单发送给我,但是如果需要,我可以将其键入STDIN或以其他方式读取。我希望程序根据默认的I / O规则打印出最佳路径的索引及其时间。
简而言之:
- 5种面包。
- 面包顺序显示为随机顺序和长度的字符串。
- 必须从每个唯一的面包中选择一个。
- 无法进行相邻的连续选择。
- 最小化选择索引之间的距离。
- 无需担心输入无效。
- 默认的I / O规则适用。
这是代码高尔夫球,最短字节数获胜。
@LuisfelipeDejesusMunoz不完全是,这些连续的指标中有几个是相邻的。
—
尼克·里德
欢迎来到PPCG,这是第一个挑战!
—
user202729
这对实际任务并不重要,但我很好奇:为什么他是个细菌发芽者,意味着您不能连续选择两个相邻架子上的面包?
—
sundar-恢复莫妮卡
可能有没有尽头的空架子?(例如,是否
—
Jonathan Allan '18
'WBWG FRW'
也是有效的输入?
0+3+5+1+4=13
但是1+3+5+7+10=26
,不是9
。