【发布时间】:2011-06-04 04:00:26
【问题描述】:
这是一个来自谷歌的面试问题。我自己无法解决。有人能解释一下吗?
编写一个程序来打印击键序列,以便生成最大数量的字符“A”。您只能使用 4 个键:A、Ctrl+A、Ctrl+C 和 Ctrl+V。只允许 N 次击键。所有 Ctrl+ 字符都被视为一键,因此 Ctrl+A 是一键。
例如序列A、Ctrl+A、Ctrl+C kbd>, Ctrl+V 4 次击键生成两个 A。
- Ctrl+A 是全选
- Ctrl+C 是复制
- Ctrl+V 是粘贴
我做了一些数学。对于任何 N,使用 x 个 A,一个 Ctrl+A,一个 Ctrl+C 和 y Ctrl+V,我们可以生成最大((N-1)/2)2个A。对于某些 N > M,最好使用尽可能多的 Ctrl+A,Ctrl+C和 Ctrl+V 序列,因为它使 A 的数量加倍。
序列 Ctrl+A, Ctrl+V, Ctrl+ C 不会覆盖现有的选择。它会将复制的选择附加到选定的选择。
【问题讨论】:
-
在许多文本编辑器中,
^A通常是“全选”,^C是“复制”,^V是“粘贴”。这给你一个想法吗? -
我的意思是'A'的数量。例如,对于 N=7,我们可以使用击键 A、A、A、CTRL+A、CTRL+C、CTRL+V、CTRL+V 打印 9 个 A
-
呃,那是 7 次击键。
-
@John "所有 CTRL+ 字符都被视为一次按键,因此 CTRL+A 是一次按键。"
-
我已经删除了 C++ 标签,这纯粹是一个算法问题,希望它能防止不满意的 C++ 追随者投反对票/投票关闭。
标签: algorithm