基础算法
Ivan She
这个作者很懒,什么都没留下…
展开
-
算法基础——动态规划之最大子数组问题
问题描述 - 分而治之的解决方案 在分治算法中,已经学习过最大子数组问题。使用分治的方法:将大数组arr分为两个小数组arr_left和arr_right,则求解arr的最大子数组和等价于: 在arr_left的最大子数组和、arr_right的最大子数组和、跨中点的最大子数组和中找一个最大的,即为arr的最大子数组和。 采用分治算法解决该问题,Golang实现在前面分治的博客里写过,其时间...原创 2020-04-08 18:55:38 · 943 阅读 · 0 评论 -
算法基础——动态规划之0-1背包问题
问题描述 解决这个问题,最先想到的一定是暴力搜索:假设一共有n件商品,每件商品都有选择或不选两种状态,所有的选择方式为——从n件商品任取一件、任取两件、’’’、任取n件, 即共有Cn1 + Cn2 + Cn3 +…+Cnn 种选择方式。其中某些选择方式会超出背包的容量,把这样的选择方式剪掉,在剩余合法的选择方式中找到商品总价值最高的组合。 我们采用递归的方式来进行暴力搜索:对于n件商品的情况...原创 2020-04-07 21:32:45 · 634 阅读 · 0 评论 -
基础算法——分治思想
分治的五个基本实例:归并排序、快排、逆序对计数、最大子数组和、次序选择 package main import ( "fmt" ) //分治思想:归并排序 func MergeSort(arr []int, left int, right int) { //递归边界 if left >= right { return } //分解原问题 mid := (left + ri...原创 2020-03-21 18:30:43 · 172 阅读 · 0 评论