我需要打电话给朋友,但是无绳电话的按钮无法正常工作。我只能按下的按钮是[上],[下]和[通话]。[上]和[下]可用于导航我最近的通话,[电话]可用于呼叫所选名称。我的电话有一个保存N
最近通话的列表,我知道我需要通话的所有朋友都在此列表中。
任务:
您会收到一个数字N
和一个名称列表L
:
N
我的手机可以记住的最近通话次数;L
具有我需要呼叫的顺序的名称。
您必须输出我在最近通话清单的最佳安排中需要进行的按键次数。
例:
->输入:
叫安娜,鲍勃,再叫安娜。最近的通话清单大小为5。
5
Anna
Bob
Anna
->输出:
可能的最佳安排: Anna, Foo, Bar, Foobar, Bob
5 # Key presses: [Call] Anna, [Up] + [Call] Bob, [Down] + [Call] Anna
更多测试用例:
Input: 5, Anna, Bob, Carl
Output: 5
Input: 5, Anna, Bob, Carl, Anna
Output: 8
Input: 5, A, B, C, D, E, A
Output: 11
Input: 6, A, B, C, D, E, A
Output: 12
Input: 4, A, B, C, B, A
Output: 10
规则:
- 您的光标将始终从列表的第一位置开始。
- 你可以把输入
N
和L
从任何来源:键盘,参数,文件等; - 列表中的名称可以采用任何合理的格式,例如:字符串,整数,字符;
- 当您到达最近通话列表的末尾并再次按[Down]时,光标将环绕。当您位于最近通话列表的开头并按[Up]时,也会发生同样的情况。
- 当您呼叫某人时,该人的名字将被移至最近通话列表的第一个位置,其余的将被下推;
- 当您呼叫某人时,您的光标将移至第一个位置。
- 朋友名称在最近通话列表中不能出现多次;
- 您可以使用虚拟条目填充最近的通话列表(请参见示例)。
- 致电的朋友人数不得超过
N
。