- 博客(14)
- 收藏
- 关注
原创 买卖股票时机
dp1 : 第一次购买的最大盈利(花的少不就相当于赚的多吗) dp2 :第一次出售的最大值 dp3 第二次购买的最大盈利 dp4 第二次出售的最大盈利。还有就是 最多购买2次 你可能一次也没买 可能买了一次 也可能买了 两次 根据所给的数据你的最大盈利的方式是不一样的 不过最小盈利肯定是0了。都是要求手中最多一只股票, 也就是在买新的股票前 手中必须无股票。然后你的第一次出售 第二次购买出售 都是和前面的那个最大盈利有关。只能买一次的话 购买前手中一定是无盈利的。不同点就是对购买次数的区分。
2023-05-05 19:42:25
126
原创 哈希表的第一步
1. 数组 如 全由小写字母组成的字符串 A, B 查A B 是否是 异或字符串(有点像 1--1的桶)哈希表的实现主要通过三种形式。2. set容器 通过set。
2023-04-25 16:34:10
125
原创 有关动态规划的最小个数问题
例如,1、4、9 和 16 都是完全平方数,而 3 和 11 不是。有关最小个数、次数的动态规划问题 用的递推式就是 dp[i] = min(dp[i], dp[i-a[j]]+1) 先遍历容量还是先遍历物品都行。给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, ...)使得它们的和等于 n。而如果是组合数则外物品内容量 就是 dp[i] += dp[i-a[j]] 如果是排列数则是外容量内背包。给你一个整数 n ,返回和为 n 的完全平方数的 最少数量。这是平方数这个题的代码。
2023-04-24 23:35:37
225
原创 分割等和子集
方法2: 01背包 往上套 变成了每个物品质量为a[i] 价值也为a[i] 所以 j 容量得背包能够装下得最大价值就是 j 所以 如果b[j] == j 就说明能选出一个数列让和为j。给定一个n个数的数列 和一定为偶数 让你判断下 是否可以分解成两个数列, 使得这两个数列得和相等。方法1:模拟, 适用范围小 复杂度指数级太高了。
2023-04-22 23:29:44
76
原创 动态规划 整数拆分问题
因为上述代码中 有个i 也就是不分解 所以 上述是最少分解成一个数的最大乘积。首先明晰这个a[i] 是 数字i 可以被拆分得到的最大乘积。这个有一个困难就是考虑 分成多少项 当分的项可以是为1时。给定一个整数 要求拆分多少项 然后求最大乘积。如果是至少分解成两项。
2023-04-22 23:00:53
205
原创 洛谷——逆序对数
分为左右两部分 分别排序, 然后进行归并的时候 从左右进行比较 当a[j] < a[i] 时候 那么 它所贡献的对数为 mid - i + 1 ------- 因为左右半侧都是有序的 所以 左边的 i ----- mid 是升序 如果 a[i] > a[j]那么 a[i] --- a[mid] 都大于 a[j] 那么 逆序对数 增加 mid - i + 1 个。
2023-04-16 22:38:21
156
1
原创 总结排序算法
4.插入排序 :从数列中第2-n项依次取 然后 将这个数 与他前面的 i - 1 项进行伴随比较找到他在这算上自己 共 i 个人中的位置。5.快速排序:二分 + 取一个基数(标杆) 把比他小的放左边 比他大的放右边 然后 再以他为界限继续重复。2.选择排序: 每次选择一个最大的或者最小的放最后 然后再从剩下的重复此步骤。1. 冒泡排序: 一个泡泡升到他合适的地方。
2023-04-09 23:22:11
117
1
原创 完全背包问题
那么 c[i][j] = max(c[i][j], c[i][j-a[i]]+b[i], c[i][j - 2 * a[i]] + 2 * b[i] --------)这个问题和01背包问题就在于一个物品可以无限次取。和01 背包问题 就在于这个第i个物品取多少次。
2023-04-06 14:39:17
143
1
原创 简单01背包问题
从代码中可以看出 c[i][j] 其实 和 c[i-1][j] c[i-1][j-a[i]]+b[i] 有关 当我只有 J 这么大的空间时 最后 所能获得的最大值是确定的 其实就是 a[1][j] ---- a[n][j] 这么多中的 最大值 然后就进行优化。考虑思路: 到 第i个 物品时 重量不超过 j 的 取法 中 价值的最大值;本人小白,刚学到一点。
2023-04-06 14:15:07
110
1
空空如也
C++圣诞帽问题求解对循环输出图形还没有想法
2022-10-06
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅