• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

竹千代

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

2015年7月28日

动态规划法

摘要: 适用情况: 1. 问题可以分为多个阶段(如用1个的阶段,用2个的阶段,.......) 2. 无后效性: 每个阶段可以由前面的阶段决定(这样就减少了运算),但不能有后面的阶段反过去影响前面阶段 3. 重叠性:各阶段存在重复运算,尤其是后阶段依赖前阶段的结果 步骤: 1. 划分阶段 2. 确定阶段转移 阅读全文

posted @ 2015-07-28 10:14 竹千代 阅读(217) 评论(0) 推荐(0)

时空权衡法

摘要: 实现思路:对全部输入或者部分做预处理,得到额外信息从而帮助提升算法效率例子:模式匹配/* * 模式匹配 * 直接思路: * 时空权衡法:对模式串进行预处理,构造出额外的移动信息表 */void makeTable(string pattern, char* table) { // t... 阅读全文

posted @ 2015-07-28 10:07 竹千代 阅读(304) 评论(0) 推荐(0)

变治法

摘要: 核心数学式: f = g+ h实现思路: 要求解的问题,如何转化为一个或多个容易求解的问题例子: 最小公倍数(先求乘积;再求最大公约数;再相除);检查数组元素唯一性(先排序;再遍历) 阅读全文

posted @ 2015-07-28 10:02 竹千代 阅读(202) 评论(0) 推荐(0)

减治法

摘要: 核心数学式:f(n) = f(n-1) + F; 应用:插入排序;生成排序/子集f(n) = f(n/2) + F; 应用:假币问题;俄式乘法f(n) = f(n-k) + F; 应用:查找第k大/小的元素实现思路:考虑对于元素数量为n的集合的执行结果,如何用数量为n-1、n/2或者n-... 阅读全文

posted @ 2015-07-28 09:59 竹千代 阅读(907) 评论(0) 推荐(0)

分治法

摘要: 核心数学式:f(n) = F + f([0,n/2]) + f([n/2,n]) 思路: 适用情景: 对一个很大集合,进行内部元素两两处理(比较大小,或者判断方位) 步骤: 1. 分 把问题集合分为独立的几个小集合 2. 治 各自解决 3. 合 把小集合的解合并成最终解 例子:快排、二叉树遍历、最近 阅读全文

posted @ 2015-07-28 09:47 竹千代 阅读(266) 评论(0) 推荐(0)

蛮力法

摘要: 蛮力法就是以最直观、最直接,从头到尾,从上到下的思维去尝试解决问题。它主要包括以下三种方式:一个一个地解决:冒泡排序尝试所有可能的迭代:顺序查找、模式匹配尝试所有的排列组合:最近点对、背包问题// 冒泡排序void bubble_sort(array[0,..,n]) { for i=0 to... 阅读全文

posted @ 2015-07-28 09:26 竹千代 阅读(1131) 评论(0) 推荐(0)

 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3