算法
RotatingJump
这个人是条懒狗,什么都没有留下。
展开
-
贪心算法之活动选择问题
因为有的问题,用动态规划解决起来,比较耗费性能,而用贪心算法,虽然不能得到最优解,但也能得到次优解,与动态规划比起来更加简单节约性能。 动态规划解决活动选择问题原创 2020-10-05 10:46:31 · 153 阅读 · 0 评论 -
01背包问题
01背包问题有三种解法,穷举法,自顶向下的动态规划,自底向上的动态规划。 穷举法,要用到进制转换以及位运算符。 自底向下总result[m,i],相当于质量为m时放第i件物品时的最大价值。 列如result[5,2],就是质量为5,放了前两件物品时的最大价值。 当一个物品进来时有几种情况 如果如果进来的物品 w[i]>m放不下 result[m,i] = result[m,i-1] 放下有两种情况 放入背包,不放入背包 放入 result[m,i]=result[m-w[i],i-1]+p[i] (把原创 2020-10-05 10:17:50 · 277 阅读 · 0 评论 -
动态规划之钢条切割
动态规划 把一个问题分级为若干个子问题,并且每个子问题之间相互联系并且每个子问题都要做出决策,每一个决策将会影响到下一个决策,这些过程就叫动态规划。 分为自顶向下和自底向上 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace 动态规划__钢条切割递归实现 { class Program {原创 2020-10-05 09:22:53 · 69 阅读 · 0 评论 -
数据结构之堆
堆 堆是一个顺序结构的完全二叉树 堆排序 先构造大顶堆,把尾元素与顶交换,然后把尾索引减一,在构造大顶堆,交换,减一,构造,循环。 namespace 堆 { class Program { static void Main(string[] args) { int[] data = new int[] { 50, 10, 90, 30, 70, 40, 80, 60, 20 }; HeapSout(data)原创 2020-10-04 18:06:32 · 84 阅读 · 0 评论 -
分治算法求解最大子数组问题
** 分治算法 ** 个人理解就是,把一个问题转换成若干个子问题并且每个子问题之间相互独立,与父问题相同。求解股票问题中的最大利润问题。 首先根据价格俩求出每一天卖出利润,然后求出在这个利润中的索引中间值,中间值mid,假设买入的天数为start,卖出的天数为end,那么就有三种可能: (1)最大利润在start到mid之间 (2)最大利润在mid到end之间 (3)最大利润在start到end之间 然后根据递归来反复调用把一个问题转化成若干个子问题 using System; using System.C原创 2020-10-04 15:48:42 · 128 阅读 · 0 评论 -
算法 简单的排序
插入排序 把数组分为两个序列 一个是有序的一个是无序的 拿无序的和有序中的比较,如果所选元素比无序的小整体后移,注意最后的索引 static void InsertSort(int []arry) { for(int i=1;i<arry.Length;i++) { int temp = arry[i]; if (arry[i] < arry[i - 1])原创 2020-09-19 20:45:55 · 89 阅读 · 0 评论