
算法
文章平均质量分 70
gds2014
Nothing is impossible!
展开
-
字符串左右移动(java实现)
给定一个字符串,这个字符串为*号和26个字母的任意组合。现在需要把字符串的*号都移动到最左侧,而把字符串中的字母移动到最右侧并保持相对顺序不变,要求时间复杂度和空间复杂度最小。分析:用point表示尾部的第一个*的位置, let表示point之前的第一个字母的位置,依次交换point和let指向的元素,再找下一组*和字母的序列,直到point和let有一个指向字符串的首地址。原创 2015-11-19 20:44:12 · 3620 阅读 · 0 评论 -
经典算法设计:动态规划(1)
1引言动态规划是解决多阶段决策问题的一种数学方法。多阶段决策问题就是对系统运行过程中若干相关阶段的每一阶段都要作出决策并使整个过程过到最优。阶段既可按时间来划分,也可以按空间或其他特征来划分,且各阶段是相互联系影响的,某一阶段即为一下阶段的初始状态。解决动态规划问题的方法就是按照最优性原理把问题归结为一组递推关系式,依次递推从而找到问题的最优解。2 动态规划的基本原理 1)最优性原理原创 2015-12-18 20:01:04 · 972 阅读 · 0 评论 -
经典算法设计:动态规划(2)字符串匹配
1字符串匹配问题 在一篇英文文章中查找指定人名,人名使用26个字母(可以是大写也可是小写),空格及两个通配符(*或?),通配符*表示零个或多个任意字母,通配符?表示一个任意字母,如J*Smi??可以匹配John Smith.分析:从开始到结尾,到第n+1个字符是否匹配成功取决于到第n个字符是否匹配成功和第n+1个字符能否匹配,也就是收益只取决于当前的状态和下一个决策量,满足无后效原创 2015-12-30 22:04:41 · 4563 阅读 · 1 评论