描述
假设你有一个特殊的键盘,键盘上有如下键:
键1: (A): 在屏幕上打印一个’A’。
键2: (Ctrl-A): 选择整个屏幕。
键3: (Ctrl-C): 复制选择到缓冲区。
键4: (Ctrl-V): 在屏幕上已有的内容后面追加打印缓冲区的内容。
现在,你只能按键盘上N次(使用以上四个键),找出你可以在屏幕上打印的“A”的最大数量
样例
1
输入: 3
输出: 3
解释: A, A, A
2
输入: 7
输出: 9
解释: A, A, A, Ctrl A, Ctrl C, Ctrl V, Ctrl V
注意事项
1 <= N <= 50
答案将在32位有符号整数的范围内。
思路
动态规划
dpi表示i个操作所能得到的最多的A的个数
初始状态下 dpi=0,当i<=6的时候容易得到dpi=i
对于任意dpi 可以省去j个操作
j=1 dpi=1+dpi-1
j=2 dpi=2+dpi-2
当j>2的时候,可以全选 复制 粘贴,所以dpi = j * dp(i-1-j)
取其中最大值即可
代码
1 | class Solution { |
-------------end of file
thanks for reading-------------