随笔分类 - DFS\BFS
摘要:题意 在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别。要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有可行的摆放方案C。思路经典DFS 用一个all记录摆放种类, 一个n...
阅读全文
摘要:思路这里要注意的是L层切片是叠放的, 上下也联通, 所以应当看作是三维的搜索BFS 判断连通块的话基本就是清楚标记就ok, 遍历到之后直接令g[z][x][y] = 0; 参考链接: 【经典/基础BFS+略微复杂的题意】PAT-L3-004. 肿瘤诊断至于用...
阅读全文
摘要:某国的足球联赛中有N支参赛球队,编号从1至N。联赛采用主客场双循环赛制,参赛球队两两之间在双方主场各赛一场。 联赛战罢,结果已经尘埃落定。此时,联赛主席突发奇想,希望从中找出一条包含所有球队的“食物链”,来说明联赛的精彩程度。“食物链”为一个1至N的...
阅读全文
摘要:在老电影“007之生死关头”(Live and Let Die)中有一个情节,007被毒贩抓到一个鳄鱼池中心的小岛上,他用了一种极为大胆的方法逃脱 —— 直接踩着池子里一系列鳄鱼的大脑袋跳上岸去!(据说当年替身演员被最后一条鳄鱼咬住了脚,幸好穿的是特别加...
阅读全文
摘要:题意小偷在跑路,如果他t时刻在u街区,那么他在t+1时刻出现在v街区的条件是,u和v街区之间有一个街区把两个街区隔开。 问,是否有某一个时刻小偷可能出现在所有城市。思路如果小偷有某一个时刻可能出现在所有城市,首先我们一定要确保整个图是连通的,如果整个图不是连...
阅读全文
摘要:题意平面上有k个障碍点。从(0,0)点出发,第一次走1个单位,第二次走2个单位,……,第n次走n个单位,恰好回到(0,0)。要求只能沿着东南西北方向走,且每次必须转弯90°(不能沿着同一个方向继续走,也不能后退)。走出的图形可以自交,但不能经过障碍点AC代码...
阅读全文
摘要:题意给出一个无向图和终点的编号 按字典序枚举出从1到终点的路径思路要事先判断结点1是否可以到达结点k, 用一个bool judge()函数判断一下从终点能否回到1点即可. 如果无解直接输出有0种走法 有解则用dfs即可. 因为每种走法里一个编号只能走一次, ...
阅读全文
摘要:题意给出一棵树的BFS, DFS遍历 (扩展节点时按照编号从小到大访问) 求每个节点的子节点序列思路记录DFS序列中每个节点的位置, 由BFS得出两个节点的距离如果距离为负, 说明既不是兄弟或孩子节点 如果距离为正且相邻, 说明是兄弟节点 如果距离为正但不相...
阅读全文
摘要:题意单词链接, 如acm, malform, mouse可以链接思路欧拉回路 1.图连通 2.图中所有点的出度==入度,或只有两个奇度点并且一个点的入度比出度大1(终点),另一个点的出度比入度大1(起点)调试的时候遇到几个比较坑的数据 需要特殊处理判断...
阅读全文
摘要:题意最多有9*9个节点的迷宫, 这个迷宫特殊的是, 每个节点可走的方向是特定的. 比如 1 2 WLF * 这个指令的意思是若朝向西来到点(1,2), 可以选择左转或直走 思路BFS 一开始用数组做的模拟, 上交RE了, 不知道原因是什么 学习紫书写法, ...
阅读全文
摘要:题意看图写树思路DFS递归AC代码(学习紫书)#include #include #include #include using namespace std;const int maxn = 200 + 10;char tre[maxn][maxn];int...
阅读全文
摘要:题意 机器人要从一个m*n(1≤m,n≤20)网格的左上角(1,1)走到右下角(m,n)。网格中的一些格子是空地(用0表示),其他格子是障碍(用1表示)。机器人每次可以往4个方向走一格,但不能连续地穿越k(0≤k≤20)个障碍,求最短路长度。起点和终点保证...
阅读全文
摘要:题意8*8国际象棋, 骑士有八个移动方向, 求最短需要走几步 思路BFS模版 方向根据实际情况调整一下即可AC代码#include #include #include using namespace std;int k[10][10], vis[10][10...
阅读全文
摘要:题意定义一个二维数组表示迷宫, 0为通道, 1为墙壁 左上(0,0)为迷宫入口, 右下角(4,4)为出口 求最短路的坐标( 输入保证有且只有一个最优解 )思路BFS 二维数组maze[][]存的是迷宫图 二维数组vis[][]用于标记该位置是否曾经走过(如果...
阅读全文
摘要:题意各国语言统计, 类似连通块, 但只有上下左右四个方向, 斜对角不算连通 最后按照语言使用人数按照从大到小排序输出, 人数相等的按照字典序输出思路只走上下左右四个方向的DFS连通块 用一个abs就能巧妙转化for( int dx = -1; dx b.x...
阅读全文
摘要:题意给出一棵带权二叉树的中序和后序遍历 找一个叶子使得它到根的路径上的权和最小。 如果有多解,该叶子本身的权应尽量小思路学习了一下紫书给的思路和代码先根据中序和后序遍历构造二叉树 根据后序遍历找到树根,然后在中序遍历中找到树根,从而找出左右子树的结点列表,然...
阅读全文
摘要:UVa - 572 Oil Deposits ( DFS求连通块 )水题 数据结构 : 深度优先搜索 DFS题意 输入一个m行n列的字符矩阵,统计字符“@”组成多少个八连块。如果两个字符“@”所在的格子相邻(横、竖或者对角线方向),就说它们属于同一个八连块...
阅读全文

浙公网安备 33010602011771号