3月24日

1.分解质因数

num = x1^k1 + x2^k2...

void divide(int n){
	//从2开始找质数
    for(int i = 2;i <= n / i; ++ i){
    	//i是n的一个因数就计算到最小的因数
        if(n % i == 0){
            int s = 0;
            while(n % i == 0){
                n /= i;
                s ++;
            }
            //输出结果
            printf("%d %d\n",i,s);
        }
    }
    //如果n还是大于1,那么这个数本身就是质数
    if(n > 1) printf("%d %d\n",n,1);
    puts("");
}

2.硬币找零

    int coinChange(vector<int>& coins, int amount) {
        int n = coins.size();
        //dp[j]:凑足总额为j所需要钱币的最少个数为dp[j]
        //dp[i]:来源coins[i]
        vector<int> dp(amount + 1,INT_MAX);
        dp[0] = 0;
        for(int i = 0;i < n;++i){   //遍历物品
            for(int j = coins[i];j <= amount;++j)   //遍历背包
                if(dp[j - coins[i]] != INT_MAX)
                    dp[j] = min(dp[j - coins[i]] + 1,dp[j]);
        }
        if(dp[amount] == INT_MAX) return -1;
        return dp[amount];
    }

3.最长公共子序列

相等就左上+1 不相等就max(左,上)

全部评论

相关推荐

在评审的大师兄很完美:像这种一般就是部门不匹配 转移至其他部门然后挂掉 我就是这样被挂了
点赞 评论 收藏
分享
斑驳不同:还为啥暴躁 假的不骂你骂谁啊
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务