![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
动态规划
文章平均质量分 69
Xin_Xin星星
这个作者很懒,什么都没留下…
展开
-
把for循环求和取代,效率提高n倍
题目 求和训练 题目要求 求以下三数的和,保留2位小数1~a之和1~b的平方和1~c的倒数和 解题思路 通常看到这样的题,我们都会想到用for循环把a,b,c依次相加,但是使用循环的话,无论怎样优化如何都要运行多次代码。 ... 大家是否听过一个故事,在欧拉小时候,老师出了一道难题:从1加到100答案是多少。小欧拉很快就说出答案5050,因为1+99=100,2+98=100....一共有50组,再加上50,答案就是5050。 ... 这时候大家就会问:你是不是说要教会计算机...原创 2021-11-09 22:05:43 · 233 阅读 · 0 评论 -
在01背包问题中,dp算法做了什么
变量 const int MAX = 1000; int f[MAX][MAX]; int v[MAX],w[MAX]; int n, k; 第一行的const定义常量,第二行v[]、w[]表示物品的体积和价值,第三行的f[][]表示函数f(n,k),第四行n表示定义物品的数量,k表示背包所能容纳的最大体积。 f(n,k)所代表的是一个函数,若n为4,k为5。 四个物品的体积为:1 2 3 4 价值为:2 4 4 5。 那么f(4,5)的值为8,这个值是如何得来的?...原创 2021-11-02 21:06:13 · 185 阅读 · 0 评论 -
用数组记忆竟然可以优化代码
简介 平时在写代码的时候,有时候看似很简单的代码,但是运行之后,随着数值的增大,电脑的运算能力有限,速度变得极慢,但是由于专业知识不足,无法自己优化代码,只能去网上抄别人已经优化的代码。 现在就教大家如何用数组记忆的方式,优化整个代码的步骤。 例子 菲波纳契数列 以菲波纳契数列为例子,普通代码如下: int fib(int n) { step1++; if (n <= 1)return n; return fib(n ...原创 2021-10-25 21:33:40 · 125 阅读 · 0 评论 -
C++使用DFS算法实现acwing背包问题
实现DFS算法 dfs算法表示在n个数字当中,通过所有组合方式,是否能找出等于k的组合。 比如:n=3,k=5;a[0]=3, a[1]=1, a[2]=2;在a[0]到a[2]中,可以找出a[0]+a[2]=5;所以返回true; 实际上dfs算法是一种遍历所有组合的一种算法,在所有可能的组合当中找出能够等于k的算法,可以把这种算法通过如下的二叉树表示: ...原创 2021-10-23 18:31:18 · 499 阅读 · 0 评论 -
C++求解最长不下降序列的长度
题目描述 在一个数字序列中,找到一个最长的子序列(可以不连续),使得这个子序列是不下降(非递减)的。 例如,现有序列A = {1,3,4,2},从左到右开始, {1}的子序列只有1,最长上升序列长度为1; {1,3}最长上升序列为{1,3},长度为2; {1,3,4}最长上升序列为{1,3,4},长度为3; {1,3,4,2,}最长上升序列为{1,2,2},长度为3。 所有的上升子序...原创 2021-10-24 20:22:19 · 694 阅读 · 0 评论