
算法
木心ERlen
这个作者很懒,什么都没留下…
-
原创 DFS求解迷宫问题
DFS求解迷宫问题给定一个迷宫地图,实际就是一个二维的数组,其中0代表可通过,1代表有障碍不能通过,求出所有路径。这种搜索问题一般使用深度搜索DFS,从出口处开始,根据选择的不同方向(上下左右)来到达另一个位置,这时可以把新到达的位置看做是新的起点,这样就可以递归的求解同样的子问题,递归结束的条件是最后到达了终点。在搜索的过程中,我们可以进行剪枝操作,我们先沿着某个方向走,并沿途把走过的节点进行标记2017-09-25 21:41:172781
0
-
原创 子数组累加和问题
给定一个整数数组(无序且有正有负)和一个目标值,求这个数组中子数组的和为目标值的子数组的最大长度。 求解思路:子数组是连续的,s[i]表示从0~i位置的累加和,s[j]表示0~j位置的累加和,那么从j+1~i位置的累加和为s[j]-s[i],他可以表示任意子数组的累加和,如果这个累加和就是目标值aim,那么找出长度最长的即可。 遍历一遍数组,并求出各个位置的累加和,如在i位置时求得为s[i]2018-01-06 22:28:01750
0
-
原创 归并排序及其应用
归并排序及其应用归并排序采用分治和递归的思想完成排序,简单来说就是,将一个规模较大的排序问题转换成两个较小规模的问题,最终形成两个已经排好的序的子数组,进而进行归并即可。左路归并右路归并合并左右两路已排好序的数组具体代码如下:public class MergeSort { /** * 归并排序 分治,整体排序=左右两边有序+合并后再排序 * @para...2018-10-14 16:01:02412
0
-
原创 快速排序及其应用
快速排序被称为是20世纪10大算法之一,可见其重要性,不明觉厉。学习快速排序不单单只是一种排序算法,更重要的是其中包含的思想,分治思想。下面进入正题,本文将给出多种快速排序的方法,并给予评价。快速排序的思想是分治,分而治之,和归并排序一样,我们将大问题分解同小规模的具有相同解法的小问题。快速排序的重点在分,归并侧重“并”,所谓分,指的是找到一个位置,这个位置的数将序列划分成两部分,左边比它...2018-12-20 23:03:11822
0
-
原创 堆排序及其应用
介绍堆排序及其应用,topk问题,优先级队列等。2018-12-20 23:14:45380
0
-
原创 动态规划 回文篇
回文字符串指的是字符串从左到右 和从右到左是一样的。对于从i到j的子串,判断其回文s[i]==s[j] &&(flag[i+1][j-1] || j-i<=1)1、最小回文分割次数求最小的切分,使得分割后每个子串都是回文的。状态 dp[i] 表示从i到n-1的最小回文分割数目,那么对于任意的一个j,j属于[i,n-1],如果[i,j]是回文的话,则dp[i]=m...2018-12-28 20:43:05790
0