1. 程式人生 > >Leetcode 650. 2 Keys Keyboard[medium]

Leetcode 650. 2 Keys Keyboard[medium]

原題地址

題目內容

這裡寫圖片描述

題目分析

題目的意思為,初始狀態衹給你一個字元A,最後要你輸出有n個A。
能進行的衹有兩種操作:1,複製當前整個字串。2,貼上上一步複製的字串。
假設要輸出4個A,那麼採取的最少的操作是:
1.複製當前1個A
2.貼上A
3.複製當前的2個A
4.貼上2個A
最少4部輸出4個A
所以假設n%2==0 那麼f(n)=f(n/2)+2;
如果n%3==0 那麼f(n)=f(n/3)+3;

程式碼實現

class Solution {
public:
    int minSteps(int n) {
        if(n == 1
) return 0; for(int i = 2; i <= n; i++){ if(n%i == 0){ return minSteps(n/i)+i; } } return n; } };