diff --git a/problems/kamacoder/0103.水流问题.md b/problems/kamacoder/0103.水流问题.md index 31f5f1d9..1c646b1c 100644 --- a/problems/kamacoder/0103.水流问题.md +++ b/problems/kamacoder/0103.水流问题.md @@ -111,14 +111,14 @@ bool isResult(vector>& grid, int x, int y) { break; } } - // 第二边界右边 + // 第二边界下边 for (int j = 0; j < m; j++) { if (visited[n - 1][j]) { isSecond = true; break; } } - // 第二边界下边 + // 第二边界右边 for (int i = 0; i < n; i++) { if (visited[i][m - 1]) { isSecond = true; diff --git a/problems/kamacoder/0110.字符串接龙.md b/problems/kamacoder/0110.字符串接龙.md index 3b6c20ca..5f11e4fb 100644 --- a/problems/kamacoder/0110.字符串接龙.md +++ b/problems/kamacoder/0110.字符串接龙.md @@ -13,10 +13,14 @@ 2. 序列中最后一个字符串是 endStr。 -3. 每次转换只能改变一个字符。 +3. **每次转换只能改变一个位置的字符**(例如 ftr 可以转化 fty ,但 ftr 不能转化 frx)。 4. 转换过程中的中间字符串必须是字典 strList 中的字符串。 +5. beginStr 和 endStr 不在 字典 strList 中 + +6. 字符串中只有小写的26个字母 + 给你两个字符串 beginStr 和 endStr 和一个字典 strList,找到从 beginStr 到 endStr 的最短转换序列中的字符串数目。如果不存在这样的转换序列,返回 0。 输入描述 @@ -67,16 +71,23 @@ yhn 所以这道题要解决两个问题: -* 图中的线是如何连在一起的 -* 起点和终点的最短路径长度 +1、图中的线是如何连在一起的 + +在搜索的过程中,我们可以枚举,用26个字母替换当前字符串的每一个字符,在看替换后 是否在 strList里出现过,就可以判断 两个字符串 是否是链接的。 + +2、起点和终点的最短路径长度 首先题目中并没有给出点与点之间的连线,而是要我们自己去连,条件是字符只能差一个。 所以判断点与点之间的关系,需要判断是不是差一个字符,**如果差一个字符,那就是有链接**。 -然后就是求起点和终点的最短路径长度,**这里无向图求最短路,广搜最为合适,广搜只要搜到了终点,那么一定是最短的路径**。因为广搜就是以起点中心向四周扩散的搜索。 +然后就是求起点和终点的最短路径长度,在无权图中,求最短路,用深搜或者广搜就行,没必要用最短路算法。 -**本题如果用深搜,会比较麻烦,要在到达终点的不同路径中选则一条最短路**。 而广搜只要达到终点,一定是最短路。 +**在无权图中,用广搜求最短路最为合适,广搜只要搜到了终点,那么一定是最短的路径**。因为广搜就是以起点中心向四周扩散的搜索。 + +**本题如果用深搜,会比较麻烦,要在到达终点的不同路径中选则一条最短路**。 + +而广搜只要达到终点,一定是最短路。 另外需要有一个注意点: