zoukankan      html  css  js  c++  java
  • LC LCP 14. 切分数组

    link

     解法:

    maxprime存一个数的最大质因数,primeMin[i] 一个数n的质因数存在i,以n结尾所分得的最小子数组数。

    class Solution {
    public:
        static const int maxn=1000000;
        int maxprime[maxn+1];
        int primeMin[maxn+1];
        void primetable(){
            for(int i=2;i<=maxn;i++){
                maxprime[i]=1;
            }
            vector<int> primes;
            for(int i=2;i<=maxn;i++){
                if(maxprime[i]==1){
                    for(int j=i;j<=maxn;j+=i){
                        maxprime[j]=i;
                    }
                }
            }
        }
    
        int splitArray(vector<int>& nums) {
            primetable();
            int n=nums.size();
            vector<int> dp(n+1,0);
            for(int i=0;i<n;i++){
                int num=nums[i];
                int idx=0;
                dp[i+1]=1+dp[i];
                while(num!=1){
                    int prime=maxprime[num];
                    if(primeMin[prime]==0) primeMin[prime]=dp[i]+1;
                    else primeMin[prime]=min(primeMin[prime],dp[i]+1);
                    dp[i+1]=min(dp[i+1],primeMin[prime]);
                    num/=prime;
                }
            }
            return dp[n];
        }
    };
  • 相关阅读:
    类例程_java战斗程序
    "类"的讲稿
    象棋中“车”的攻击范围_C#
    面向对象_方法_例题
    入门例子
    MyBatis
    MyBatis
    MyBatis
    Spring
    Hibernate学习
  • 原文地址:https://www.cnblogs.com/FEIIEF/p/12796276.html
Copyright © 2011-2022 走看看