
贪心算法和动态规划的区别与联系
1. 联系 都是一种推导算法 都是分解成子问题来求解,都需要具有最优子结构 2. 区别 贪心:每一步的最优解一定包含上一步的最优解,上一步之前的最优解则不作保留。动态规划:全局最优解中一定包含某个局部最优解,但不一定包含前一个局部最优...
开宝箱(计算字母出现次数)
题目名称:开宝箱 题目描述 青木在提瓦特大陆冒险时遇到了一个神秘的宝箱,宝箱旁边有一串由 n 个小写字母组成的密文,破解宝箱的方法就藏在这一串密文当中。在青木的不断尝试下,发现开启宝箱的密码是所有仅出现一次的字母按密文中的顺序排列起来...
三角形计数(递推)
题目名称:三角形计数 题目描述 n 等分边长为 n的三角形的每条边,将对应的等分点连接起来(连接线分别平行于三角形三条边),求共有多少个头朝上的三角形? #include <iostream> using namespac...
最长上升子序列:详细题解+动画演示(动态规划和二分查找)
原题链接 题目描述: 给定一个无序的整数数组,找到其中最长上升子序列的长度。 示例: 输入: [10,9,2,5,3,7,101,18] 输出: 4 解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。 说明: 可能会...
最长上升子序列——线性DP(C++)
AcWing 895. 最长上升子序列 给定一个长度为N的数列,求数值严格单调递增的子序列的长度最长是多少。 输入格式 第一行包含整数N。 第二行包含N个整数,表示完整序列。 输出格式 输出一个整数,表示最大长度。 数据范围 1≤N≤...
放苹果(递归、动态规划、python)
描述 把m个同样的苹果放在n个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法? 注意:如果有7个苹果和3个盘子,(5,1,1)和(1,5,1)被视为是同一种分法。 数据范围:0 <= m <= 10 ,1 &l...
Python算法-动态规划算法应用
背包问题是动态规划算法的经典问题,本节将用背包问题介绍完整的动态规划算法如何解决问题。 1 问题描述 有n件物品,它们有各自的重量和价值,现有给定容量的背包,如何让背包里装入的物品具有最大的价值,如图4所示,装包条件是一种商品只能装一...
洛谷 p1177 题解 排序模板
排序模板题。 我写了插入排序,冒泡排序,选择排序,归并排序,快速排序,桶排序。 ** 具体算法看注释**。 #include<bits/stdc++.h> using namespace std; int a[200001...
快速排序与 sort 自定义排序 以洛谷p117[模板]排序为例
快速排序是 OI 中常用的算法。这篇题解/笔记将会详细地讲解快速排序的原理、实现过程,也会拓展 STL sort 函数的使用和快排复杂度及其证明。 快速排序的原理 快速排序如何用 C++ 实现? 我们以洛谷 P1177 【模板】排序为...