假设你的键盘只有以下键:
A
Ctrl + A
Ctrl + C
Ctrl + V
这里Ctrl+A,Ctrl+C,Ctrl+V分别代表”全选”,“复制”,“粘贴”。
如果你只能按键盘N次,请写一个程序可以产生最多数量的A。
思路分析,其实只需要写出前面按键几次能够产生的结果就可以分析出答案:
按键1次没有任何结果还是之前的1个A,同理到按键3次的时候会多出1个A,当前共有2个A,按键4次的时候只可以全选,复制,粘贴粘贴,此时共3个A,但5次的时候可以选择在第3次时选择全选,复制,粘贴也可以选择方案全选,复制,粘贴粘贴粘贴,共有4个A,在此之后,都有这两种选择,从2次前全选复制粘贴或者一直粘贴,只要比较俩个值大小就好了
次数- - - - - A的数量
1 - - - - - - - - 1
2 - - - - - - - - 1
3 - - - - - - - - 2
4 - - - - - - - - 3
5 - - - - - - - - 4
6 - - - - - - - - 6
7 - - - - - - - - 8
def get_max_A(times):
if times==1:
return(1)
if times==2:
return(1)
b2=1
b1=1
for x in range(3,times+1):
if b1+1>=b2*2:
max_a=b1+1
else:
max_a=b2*2
b2=b1
b1=max_a
if x==times:
return(max_a)
程序里面b2,b1分别代表当前操作次数之前的2次时的产生的A的数量,1次的A的数量