LeetCode-2 Keys Keyboard

这道题的主要方法是写出前几项,然后找规律,发现可以使用DP记录之前的值来解答。它主要是为了找到能将原来的数整除的数字,然后通过这个数字找到现在这个数字的值。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class Solution {
public:
int minSteps(int n) {
if(n==1) return 0;
if(n==2) return 2;
int* dp=new int[n+1];
dp[1]=0;
dp[2]=2;
for(int i=3;i<=n;i++){
dp[i]=i;
for(int j=2;j<i/2;j++){
if(i%j==0){
dp[i]=j+dp[i/j];
break;
}
}
}
return dp[n];
}
};