博客专栏  >  编程语言   >  挑战程序设计竞赛2 算法和数据结构

挑战程序设计竞赛2 算法和数据结构

本篇主要是讲《挑战程序设计竞赛2 算法和数据结构》书的读后感和部分题目的再次解读、编程。包括书中的部分代码和一些个人的见解。如果想深入了解,建议去网上买一本回来看,比较适合学习算法的初学者。

关注
1 已关注
62篇博文
  • 第十九章 ALDS1_13_C:15 Puzzle 十六格拼图

    知识点 迭代加深:在循环执行深度受限搜索的过程中逐步增加限制值limit,直到找到解为止。 如果当前状态到最终状态的最小成本h加上当前状态深度超过了限制深度d,就可以直接中断搜索。 问题链接...

    2018-01-05 00:21
    15
  • 第十九章 ALDS1_13_B:8 Puzzle 九宫格拼图

    问题链接ALDS1_13_B:8 Puzzle问题内容 求当前9宫格如何移动成目标的9宫格。 思路 同样使用回溯的方法去做。 代码#include #include #include...

    2018-01-04 22:20
    15
  • 第十九章 ALDS1_13_A:8 Queens Problem 八皇后问题

    知识点 八皇后问题比较多解法,这里说的是最简单的回溯解法。 问题链接ALDS1_13_A:8 Queens Problem问题内容 在8*8的国际象棋棋盘里,有k个皇后已经放好了,皇后会将她的...

    2018-01-04 21:54
    23
  • 第十八章 数论

    问题链接 ALDS1_1_C:Prime Numbers 判断n是否是质数 #include #include using namespace std; int isPr...

    2018-01-04 21:28
    8
  • 第十七章 DPL_3_B: Largest Rectangle 最大长方形

    问题链接DPL_3_B: Largest Rectangle问题内容 求最大的干净面积。0代表干净,1代表有污渍。和上一不同的是,这个题目面积可以是长方形的。 思路 首先通过以行为直方图,以行...

    2018-01-04 21:27
    8
  • 第十七章 DPL_3_A:Largest Square 最大正方形

    问题链接DPL_3_A:Largest Square问题内容 在H*W个边长为1cm的正方形瓷砖,0代表瓷砖有污渍,1代表瓷砖干净。求干净的最大正方形。 思路 dp[i][j]代表从瓷砖(i,...

    2018-01-01 16:49
    45
  • 第十七章 DPL_1_D:Longest Increasing Subsequence 最长递增子序列

    问题链接DPL_1_D:Longest Increasing Subsequence问题内容 求序列A的子序列中递增序列最长的长度。 思路 LCS问题,不懂的点这里最长递增子序列 代码#inc...

    2018-01-01 15:48
    14
  • 第十七章 DPL_1_B:0-1 Knapsack Problem 0-1背包问题

    问题链接DPL_1_B:0-1 Knapsack Problem问题内容 求价值为viv_i、重量为wiw_i的N个物品以及容量为W的背包最多能装的最大价值。 思路 基础的01背包问题,不懂的...

    2018-01-01 15:42
    11
  • 第十七章 DPL_1_A:Coin Changing Problem 硬币问题

    问题链接DPL_1_A:Coin Changing Problem问题内容 对于m个面值不同的硬币,求凑成面值为n最少需要多少个硬币。 思路 这题不是贪心算法范畴内,这是动态规划相关的问题。 ...

    2018-01-01 15:34
    12
  • 第十六章 CGL_6_A:Segment Intersections: Manhattan Geometry 线段相交问题

    知识点 扫描线:将一条与x轴(或y轴)平行的直线向上(向右)平行移动寻找交点的直线。 平面扫描算法: 1、将已输入线段的端点按照y升序排序,添加到表EP 2、将二叉搜索树T置为空 3、按顺序...

    2018-01-01 15:07
    13
  • 第十六章 计算几何模版

    模版 #define EPS (1e-10) #define equals(a,b) (fabs((a) - (b)) // 点类 class Point { public : d...

    2018-01-01 03:02
    18
  • 第十五章 GRL_2_A:Minimum Spanning Tree 最小生成树

    知识点 我们在第十三章时候讲过最小生成树,我们用的prim算法和邻接矩阵,现在这个题目是顶点数量比较多的情况,所以我们需要使用新的算法。 kruskal算法 1、将图G=(V,E)的边...

    2017-12-31 13:53
    18
  • 第十五章 GRL_5_A:Diameter of a Tree 树的直径

    知识点 直径:树的最远结点间的距离 问题链接GRL_5_A:Diameter of a Tree问题内容 求出树的直径 思路 1、任选一结点s,求到s最远的结点x 2、求到x最远结点...

    2017-12-31 13:29
    17
  • 第十五章 GRL_3_A:Articulation Points 关节点

    知识点 关节点:在图G中,如果删除顶点u以及从u出发的所有边后得到的子图不能连通,则顶点u是图G的关节点,也称为割点。 问题链接GRL_3_A:Articulation Points问题内容 ...

    2017-12-31 13:01
    18
  • 第十五章 GRL_4_B:Topological Sort 拓扑排序

    问题链接GRL_4_B:Topological Sort问题内容 求有向图的拓扑排序 思路 利用广度优先搜索或者深度优先搜索都可以遍历。 代码广度优先搜索#include #include ...

    2017-12-31 02:21
    20
  • 第十五章 GRL_1_C:All Pairs Shortest Path 所有点对间最短路径

    知识点 负环:所有边的权值之和为负 弗洛伊德(Warshall-Floyd)算法条件 不包含负环的图 执行步骤 设Di,j,kD_{i,j,k}为从ii到jj的只以(1..k)(1..k...

    2017-12-31 01:34
    26
  • 第十四章 DSL_2_C:Range Search (kD Tree) 范围搜索

    知识点 范围搜索:从拥有多个属性的报表集合(数据库)中,寻找具有特定属性且位于指定范围内的元素。 问题链接DSL_2_C:Range Search (kD Tree)问题内容 求出矩阵区间内的...

    2017-12-31 00:56
    51
  • 第十四章 DSL_1_A:Disjoint Set: Union Find Tree 并查集

    知识点 并查集(Disjoint Sets):用互质集合(一个元素不同时包含于多个集合的集合)对数据进行分类管理的数据结构,包含的操作:makeSet(x):创建仅包含元素x的新集合 findSe...

    2017-12-31 00:55
    57
  • 第十三章 ALDS1_12_C:Single Source Shortest Path II 单源最短路径

    问题链接ALDS1_12_C:Single Source Shortest Path II问题内容 求出顶点0到各边的最短路径 思路 由于n比较大,所以需要用vector来处理数组,同时每条边...

    2017-12-31 00:54
    552
  • 第十三章 ALDS1_12_B:Single Source Shortest Path I 单源最短路径

    知识点 最短路径:对于加权图G=(V,E)中,求给定顶点s、d之间各边权值总和最小的路径。 单源最短路径(Single Source Shortest Path,SSSP):在图G中,求给定...

    2017-12-31 00:53
    536
img博客搬家
img撰写博客
img发布 Chat
img专家申请
img意见反馈
img返回顶部