DFS
月落乌啼霜月落
在减肥路上越走越远的废宅。。。
目前坐标 厦门U3D工程师
~~~算法赛高!!!!!
展开
-
图的深度遍历
Think: 题目都说了用DFS,所以直接用DFS过了~~~~Problem Description请定一个无向图,顶点编号从0到n-1,用深度优先搜索(DFS),遍历并输出。遍历时,先遍历节点编号小的。 Input输入第一行为整数n(0 < n < 100),表示数据的组数。 对于每组数据,第一行是两个整数k,m(0 < k < 100,0 < m < k*k),表示有m条边,k个顶点。 下面原创 2017-03-08 10:41:05 · 356 阅读 · 0 评论 -
数据结构实验之图论四:迷宫探索
Problem Description有一个地下迷宫,它的通道都是直的,而通道所有交叉点(包括通道的端点)上都有一盏灯和一个开关;请问如何从某个起点开始在迷宫中点亮所有的灯并回到起点? Input连续T组数据输入,每组数据第一行给出三个正整数,分别表示地下迷宫的结点数N(1 < N <= 1000)、边数M(M <= 3000)和起始结点编号S,随后M行对应M条边,每行给出一对正整数,表示一条边相原创 2017-03-08 10:43:03 · 948 阅读 · 0 评论 -
走迷宫
Think: 因为只能向上下左右移动一格,所以是需要DFS四个方向的情况就可以了。同时考虑是否越界。Problem Description一个由n * m 个格子组成的迷宫,起点是(1, 1), 终点是(n, m),每次可以向上下左右四个方向任意走一步,并且有些格子是不能走动,求从起点到终点经过每个格子至多一次的走法数。 Input 第一行一个整数T 表示有T 组测试数据。(T <= 110原创 2017-03-08 10:45:45 · 213 阅读 · 0 评论 -
走迷宫
Think: 很裸的DFS题~~~ 所以直接上DFS了, 用一个flag来标记是否存在输出。 MAP数组用来储存, vis用来标记是否访问过。 然后changX changY 两个数组表示每次点的变化方向。 变换后记住判断是否越界。 每次遍历 DFS(tx, ty) Problem Description 有一个m*n格的迷宫(表示有m行、n列),其中有可走的也有不可原创 2017-04-15 19:37:05 · 408 阅读 · 0 评论 -
数据结构实验之图论八:欧拉回路
Think: 因为 周末要 离散机试所以 就找了一道 和离散 有关的题目 《欧拉回路》, 不懂的 自行 YY脑补。思路:分别用两个bool数组进行 标记是否存在 以及 访问情况, 然后用 一个Int数组 来标记度数, 然后 直接 DFS 一遍就可以了TAT;然后 由 性质可以知道 当时欧拉回路时 各个顶点 有且经过一次 所以 也就是 最后 sum == n 的判断;至于 那个度数为奇数时的情况原创 2017-05-25 21:40:54 · 561 阅读 · 0 评论 -
马的走法
Think: 本篇blog采用 DFS的回溯法 解题~~~~思路: 定义 2个 数组来标记 马可以走的各自, 然后 用DFS搜索就可以了Problem Description在一个4*5的棋盘上,马的初始位置坐标(纵 横)位置由键盘输入,求马能返回初始位置的所有不同走法的总数(马走过的位置不能重复,马走“日”字)。如果马的初始位置坐标超过棋盘的边界,则输出ERROR。例如初始位置为4 6,则输出原创 2017-08-02 20:22:34 · 606 阅读 · 0 评论 -
D - bLue的旅行
Think: 直接用DFS就可以了, 判断好边界条件就可以了Problem Description一天,刚打完 CF 的 bLue 决定来一场说走就走的旅行,于是他拿出了地图开始制定行程。 在地图上,bLue 和目的地之间可以用一条直线来表示,他自己在坐标为 0 的位置,而目的地在坐标为 n 的位置。 bLue 计划花费 d 天到达目的地,旅途中,他每天只能选择前进 1, 2, 3 或 4 个原创 2017-08-11 21:08:05 · 304 阅读 · 0 评论 -
走迷宫
Think: 很简单的DFS搜索题, 每次搜索遍历时 判断是否到达边界, 以及是否越界坐标变化范围 DFS(x + 1, y); DFS(x - 1, y); DFS(x, y + 1); DFS(x, y - 1);Problem Description一个由n * m 个格子组成的迷宫,起点是(1, 1), 终点是(n, m),每次原创 2017-07-27 19:59:42 · 203 阅读 · 0 评论