福2魔勋的私房菜
福尔魔勋
将我们能做的事情做到极致,有梦想,不将就。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
2017华为软件精英挑战赛小结
// 2017华为软件精英挑战赛小结// 不说废话,直接上货!希望对目前的参赛者,或日后学习的人,提供一些参考和思路。原创 2017-04-07 14:52:19 · 954 阅读 · 0 评论 -
0-1背包问题,两个CPU核分配任务问题
解析0-1背包问题: 0-1背包问题的解决思路是使用动态规划,设dp[i][j]表示存在前 i 件商品,背包的容量为W == j 时,的最优解。动态规划是在子问题dp[ik][jk](ik<i , jk<j)得到最优解后求解当前dp[i][j]的最优解的过程。关键是想明白dp[i][j]与dp[ik][jk]之间的关系,从商品的角度来思考即:1.当背包 j 无法容下 i 商品时(w[i]>j)时,那么当前dp[i][j]的最优解就和没有 i 商品一样,即dp[i][j]=dp[i - 1][j]原创 2017-08-30 08:07:47 · 1219 阅读 · 0 评论 -
最大二分匹配:最大“素数伴侣”问题
而最大二分匹配问题是多源多汇问题的一个特例,所以它可以完全使用“多源多汇”问题的流网络的解决方法来解决,其中最关键的环节在于寻找“增广路径”。“多源多汇”问题,一共3个集合,源点集合S,汇点集合D,其它点集合P。最大二分匹配问题没有集合P,只有集合S和集合D。同样,最大二分匹配最关键的环节还是寻找“增广路径”。原创 2017-08-26 16:13:43 · 763 阅读 · 0 评论 -
通配符匹配(Wildcard Matching)与正则表达式匹配(Regular Expression Matching)解法解析
编程题,通配符匹配(Wildcard Matching)与正则表达式匹配(Regular Expression Matching)解题方法讲解。原创 2017-08-19 20:27:59 · 2539 阅读 · 1 评论 -
“并查集”问题:抢银行问题
并查集是一种树型的数据结构,用于处理一些不相交集合(Disjoint Sets)的合并及查询问题。并查集的核心代码只有3行,非常巧妙的且极大的降低了该类问题的时间复杂度。原创 2017-08-26 14:08:45 · 339 阅读 · 0 评论 -
两个CPU核分配任务问题
两个CPU核分配任务问题: 给定n(0~N)个任务work,每个任务i=0~n-1都有各自需要处理的时间needTime[i] =1~1000(ms)。另外有两个CPU核(核A、核B)处理这些任务,将n个任务分配给两个CPU核,求这两个核处理完所有给定任务所需要的最短时间。原创 2017-08-06 11:32:52 · 3927 阅读 · 1 评论 -
快速排序算法
快速排序,使用递归的方式实现,快速排序算法递归的开始需要给出终止条件,那么这个终止条件是什么?因为快速排序的核心思想是用数组(子数组)中的第一个数作参照ref,将数组(子数组)分为“小于等于参照 ref ”的子数组和“大于等于参照 ref ”的子数组,然后继续重复上面的过程。而这个核心思想的关键是找到这个参照ref的位置k(这个位置k就是排完序之后该ref的位置),即当 i<k 时,arr[i]<=arr[k],当 i>k 时,arr[i]>=arr[k]。找到位置k后,将数组从这个位置k分割成两个子数组,原创 2017-08-06 09:27:19 · 734 阅读 · 0 评论 -
解析KMP模式匹配算法
程杰《大话数据结构》那本书中,“串”那一章的最后有个特别厉害的算法——KMP模式匹配算法。模式匹配算法其实就是,在一个主字符串当中寻找某子字符串,并返回子字符串在主字符串中的位置。重点说“求next[]数组的处理技巧”的那部分,希望对其他人理解KMP算法有所帮助。原创 2017-08-11 19:38:43 · 400 阅读 · 0 评论 -
C++最大公约数和最小公倍数
C++实现 最大公约数和最小公倍数原创 2017-05-12 20:27:42 · 1483 阅读 · 0 评论 -
C++全排列:一种新的全排列方法(使用单向链表实现)
一种使用单向链表实现的全排列方法。通过一个极简版的单向链表,实现全排列,并能指定输出特定一种排列情况。代码示例为“对 A B C D E F ……”进行全排列,可以在此基础之上扩展为其它全排列应用。原创 2017-05-12 14:27:56 · 535 阅读 · 0 评论 -
C++链表:极简版的单向链表类
C++建立一个(极简版的)链表类(单向链表)。用指针实现链表的有序添加数据,使链表内的数据满足从小到大排序。可以在此基础上扩展出许多功能,稍稍改动就可以用来解决“1000个数找出前5个最小数”等类似问题。原创 2017-05-07 00:18:31 · 627 阅读 · 0 评论 -
C++图:极简版的图类(邻接链表)
建立一个(极简版的)图类(邻接链表)。原创 2017-05-09 20:56:44 · 1645 阅读 · 0 评论 -
单向链表反转:迭代法和递归法
简单来讲,单向链表的反转操作是由n个移除操作和n个插入操作构成(假设单向链表的长度为n)。而迭代法和递归法,分别从两个方向进行“移除”和“插入”。迭代法从前向后将单向链表的元素依次移除,并插入到单向链表的开头;递归法从后向前将单向链表的元素依次移除,并插入到单向链表的最后。原创 2017-08-29 19:43:40 · 687 阅读 · 0 评论
分享