Original Link 思想: BFS。 将搜索的起始点,即坐标为 @ 的点入队开始搜索。 利用偏移量数组遍历四个方向,将搜索到的点入队,记录 res ++。 取出队头,扩展队头搜索,直到清空队列即可。 代码: #include <bits/stdc++.h> using names…
Original Link 思想: BFS。 难点一,处理地图坐标和转换: 题目的地图坐标和二维数组坐标不照应; 则,第 a 排 b 列需要转换为 mp[n - b][a - 1]。 难点二,记录消耗的天数: 由于 BFS 搜索不能记录当前搜索的是第几层; 则,考虑在新搜索到的点额外增加参数 w,来…
Original Link 思想: 极致的暴力,极致的享受。 将九宫格,去除中间的 $5$ 后转换为一维 string 来记录; 列举出所有的情况,进行枚举比较,合法则方案加一。 转换方法如下: 对于九宫格: 4 9 2 3 5 7 8 1 6 去掉 5 后,顺时针螺旋排列为 4 9 2 7 6 1…
Original Link 思想: DFS。 题目所给出的路径可以连接为一个无向图。 则利用邻接矩阵来存图,从 $1$ 号点开始,深度优先遍历所有的点。 走过的路径长度用 cnt 保存,最后维护最长的 res 即可。 代码: #include <iostream> #include &l…
Original Link 思想: 贪心。 对于 a[i],优先使其进行 -2 的操作; 若 a[i] % 2 != 0,则说明需要进行 -1 的操作,此时进行判断: 若 a[i + 1] > 0,则将 a[i + 1] --,此时可以使得 a[i] 操作后变为 $0$。 否则无法使得 a[i…
Original Link 思想: 算术基本定理。 任何一个大于 $1$ 的自然数 $N$,如果 $N$ 不为质数: 则 $N$ 可以唯一分解成有限个质数的乘积 $N=p_1^{a_1}\times p_2^{a_2}\dots\times p_i^{a_k}$,且最多只有一个大于 $\sqrt{n…
Original Link 思想: DFS。 从小到大依次枚举所有的数显然不现实,因此考虑按位枚举。 枚举从最高位开始,之后枚举每一位的数,直到达到指定位数为止。 枚举每一位后,需要判断当前位的数和高位数的组合数是否为质数,只有如此才能满足条件。 举例说明对于 $7331$ 的枚举过程: 第一位为 …
Original Link 思想: DFS。 由题意易知,从左上角的字母开始搜索,最多经过 $26$ 个不同的字母。 则将走过的字母利用 vis 数组进行标记,若走过标记为 True。 递归处理每一个格子,每一层利用偏移量数组遍历上下左右四个方向。 用 res 维护最大可以走过的不同字母的个数,每次…
Original Link 思想: DFS。 要想使得串保持平衡,即 (((((....))))) 形式,则设 p 为 ( 的数量,q 为 ) 的数量。 特别的,起始时为 ) 无论如何搜索都无法平衡,最大长度为 $0$。 在搜索时,当 q != 0 时,若下次出现 ( ,此时为 (()(... 亦不…
Original Link 思想: DFS。 注意棋盘的每一行,每一列及其有棋子存在的对角线的平行线上有且只有一个棋子。 递归处理,每一次递视为一次对是否放置棋子的判断,递归的层数视为棋盘的层数,每一层只能放置一个棋子。 对于递归的每一层,遍历这层棋盘的格子,判断以该格子的列和对角线的平行线上是否存…