码迷,mamicode.com
首页 > 其他好文 > 详细

650. 2 Keys Keyboard

时间:2017-11-06 21:16:49      阅读:103      评论:0      收藏:0      [点我收藏+]

标签:问题   []   board   等于   new   网上   没有   --   n+1   

public int minSteps(int n) {
        /*
        由于只能复制全部或者一个,所以:
        如果一个数不是质数,那么最快的就是由最大的公因子复制而来
        如果一个数是质数,那么所有方式都大于等于全部由1复制而来
        网上看了看这个规律都是观察得出的,所以直接背过:
        两个键的键盘问题(只能全部复制或者粘贴问题):
        非质数就考虑最大公因子,质数就直接返回n(当然考察质数也是需要循环判断没有因子)
         */
        if (n <= 1)
            return 0;
        int[] dp = new int[n+1];
        dp[0] = 0;
        dp[1] = 0;
        for (int i =2;i < n+1;i++ )
        {
            for (int j = i-1;j > 0;j--)
            {
                if (i % j == 0)
                {
                    //i/j是(i/j-1)+1,(i/j-1)代表粘贴(i/j-1),后边加的1是复制
                    dp[i] = dp[j] + (i/j);
                    break;
                }
            }
        }
        return dp[n];
    }

 

650. 2 Keys Keyboard

标签:问题   []   board   等于   new   网上   没有   --   n+1   

原文地址:http://www.cnblogs.com/stAr-1/p/7794934.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!