自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 收藏
  • 关注

原创 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 1107

原创 单向链表反转:迭代法和递归法

简单来讲,单向链表的反转操作是由n个移除操作和n个插入操作构成(假设单向链表的长度为n)。而迭代法和递归法,分别从两个方向进行“移除”和“插入”。迭代法从前向后将单向链表的元素依次移除,并插入到单向链表的开头;递归法从后向前将单向链表的元素依次移除,并插入到单向链表的最后。

2017-08-29 19:43:40 586

原创 最大二分匹配:最大“素数伴侣”问题

而最大二分匹配问题是多源多汇问题的一个特例,所以它可以完全使用“多源多汇”问题的流网络的解决方法来解决,其中最关键的环节在于寻找“增广路径”。“多源多汇”问题,一共3个集合,源点集合S,汇点集合D,其它点集合P。最大二分匹配问题没有集合P,只有集合S和集合D。同样,最大二分匹配最关键的环节还是寻找“增广路径”。

2017-08-26 16:13:43 631

原创 “并查集”问题:抢银行问题

并查集是一种树型的数据结构,用于处理一些不相交集合(Disjoint Sets)的合并及查询问题。并查集的核心代码只有3行,非常巧妙的且极大的降低了该类问题的时间复杂度。

2017-08-26 14:08:45 274

原创 通配符匹配(Wildcard Matching)与正则表达式匹配(Regular Expression Matching)解法解析

编程题,通配符匹配(Wildcard Matching)与正则表达式匹配(Regular Expression Matching)解题方法讲解。

2017-08-19 20:27:59 2272 1

原创 解析KMP模式匹配算法

程杰《大话数据结构》那本书中,“串”那一章的最后有个特别厉害的算法——KMP模式匹配算法。模式匹配算法其实就是,在一个主字符串当中寻找某子字符串,并返回子字符串在主字符串中的位置。重点说“求next[]数组的处理技巧”的那部分,希望对其他人理解KMP算法有所帮助。

2017-08-11 19:38:43 360

原创 两个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 3514 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 633

原创 C++最大公约数和最小公倍数

C++实现 最大公约数和最小公倍数

2017-05-12 20:27:42 1364

原创 C++全排列:一种新的全排列方法(使用单向链表实现)

一种使用单向链表实现的全排列方法。通过一个极简版的单向链表,实现全排列,并能指定输出特定一种排列情况。代码示例为“对 A B C D E F ……”进行全排列,可以在此基础之上扩展为其它全排列应用。

2017-05-12 14:27:56 464

原创 C++图:极简版的图类(邻接链表)

建立一个(极简版的)图类(邻接链表)。

2017-05-09 20:56:44 1566

原创 C++链表:极简版的单向链表类

C++建立一个(极简版的)链表类(单向链表)。用指针实现链表的有序添加数据,使链表内的数据满足从小到大排序。可以在此基础上扩展出许多功能,稍稍改动就可以用来解决“1000个数找出前5个最小数”等类似问题。

2017-05-07 00:18:31 536

原创 2017华为软件精英挑战赛小结

// 2017华为软件精英挑战赛小结// 不说废话,直接上货!希望对目前的参赛者,或日后学习的人,提供一些参考和思路。

2017-04-07 14:52:19 869

原创 C了个++:03 - C++的字符串与 string 类

简单梳理总结了C++中字符和字符串的知识C++数据类型有3种级别:基本级类型(整型、浮点型)、复合级类型(数组、字符串、指针、地址)、抽象级类型(结构、类)这里跟字符串相关的是:char ch(基本类型)、char ar[]或char* ar(复合类型)、string str(抽象类型)

2016-10-09 23:44:06 785 1

原创 C了个++:02 - C++的名称空间(层次)

梳理总结了有关C++中名称空间的知识例程:名称空间示例(见最后)名称:变量名、函数名、枚举、类、结构以及类和结构的成员名名称空间(层次):是为了更好地控制名称的作用域,使同一区域或不同区域中(同名)名称能相互独立不冲突名称空间问题:来自不同类库的同名名称的冲突问题注意区分:名称名 和 名称空间名、using声明 和 using编译指令

2016-10-02 10:42:27 439

原创 C了个++:01 - C++的输入、输出和文件

简单总结梳理了C++中有关文件输入输出的知识,并添加程序实例(实例见最后)例程2:2016年华为软件编程大赛文件(topo.csv、demand.csv、result.csv)的输入输出(删减)涉及知识:类、函数重载、模板、多重继承、流操作、缓冲区、控制符和格式化常量、类型转换学习目的:文本文件输入输出、控制输出格式使用的类:iostream(标准输入输出类)、fstream(文件输入输出类)、sstream(string字符串输入输出类)

2016-10-01 09:39:18 734 2

原创 MAC快捷操作收藏

修饰键 Command(或 Cmd)⌘ Shift ⇧ Option(或 Alt)⌥ Control(或 Ctrl)⌃ Caps Lock ⇪ Fn Tab Escape(Esc)⎋ Delete(Del)⌫ Tab ⇥ return(enter)⏎ 修饰键的位置在“系统偏好设置-键盘-修饰键...

2018-07-21 20:16:06 1899 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除