只有两个键的键盘
分析:
注意以下几点:先开始已经有一个字符A,不支持部分复制,并且只能粘贴你上一次复制的字符
思路:我们先写出前十项观察一下
当n=1,return 0;
n=2,return 2;
n=3,return 3;
n=4,return 4;
n=5,return 5;
n=6,return 5;
n=7,return 7;
n=8,return 6;
n=9,return 9;
n=10,return 7;
由此可见,其实就是求它的因子个数的和。
方法一:非递归
class Solution
{
public:
int minSteps(int n)
{
int res=0;
for(int i=2;i<=n;i++)
{
while(n%i==0)
{
res+=i;
n/=i;
}
}
return res;
}
}
方法二:递归
class Solution
{
public:
int minSteps(int n)
{
if(n==1)
return 0;
for(int i=2;i<=n;i++)
{
if(n%i==0)
{
return i+minSteps(n/i);
}
}
return n;
}
};