
简单搜索
「已注销」
这个作者很懒,什么都没留下…
展开
-
洛谷—P1032 字串变换题解
题目链接: P1032 字串变换解题思路: 题意已经把做法写得特别露骨了。。。最小步数,最多6个变换规则。。。。广搜自不必说,不仅可以寻找解而且还能判断步数(根据广搜首解最优的性质可以得到)。开两个数组记录串的转换关系,然后以a串(原串)为起点开始搜索,搜索目标是b串。需要一个map记录某个串是不是被搜到过,如果已经搜过了就不再继续搜 。我们枚举所有可能的转换手段,枚举当前队列中队头那个串的每一个位置,然后去尝试拼接,如果有相同串则拼接。拼接函数如下:inline string getStr(strin原创 2020-10-15 20:39:07 · 407 阅读 · 0 评论 -
洛谷—P1443 马的遍历题解
题目链接:P1443 马的遍历解题思路: 直接BFS,用数组step记录步数即可。代码:#include<iostream>#include<queue>#include<iomanip>#include<cstdio>#include<cstring>using namespace std;const int dx[] = { 2,-2,2,-2,-1,1,-1,1 };const int dy[] = { 1,1,-1,-1原创 2020-10-14 21:28:58 · 359 阅读 · 0 评论 -
洛谷—P1162 填涂颜色题解
题目链接:P1162 填涂颜色解题思路: 用DFS搜索,用vis数组记录当前点有没有访问过。如果没有就输出2,否则输出0。实际上这是不对的。看下面:我们的判断数组是这个样子,从DFS(1,1)开始搜索bool check(int x, int y) { if (x<1 || x>n || y<1 || y>n) { return 0; } return 1;}然后提交会发现过不了。这是因为dfs在先搜索的时候应该搜索到矩阵的外面一圈(0, n + 1) 否则的话原创 2020-10-14 21:26:30 · 571 阅读 · 0 评论 -
洛谷—P1019 单词接龙题解
题目链接: P1019 单词接龙解题思路: 用DFS进行搜索,用vis[i]表示这个单词用过的次数,然后进行查找。首先从给定的头开始进行dfs然后进行遍历每个单词1.看这个单词是否用过的次数<2。2.看这个单词是否可以连接上。然后需要暴力一遍拼的字符串长度来判断是否可以连接,可以的话就进行连接,然后继续深搜下去。否则话就回溯回来。代码:#include<iostream>#include<algorithm>#include<cstring>usi原创 2020-10-13 19:26:48 · 271 阅读 · 0 评论 -
洛谷—P1378 油滴扩展题解
题目链接:P1378 油滴扩展解题思路: 这道题的关键在于怎么求出当前点可以拓展的最大半径。想一想,这个半径要满足什么条件?这个半径是不是当前点接触到其他油滴或者框子的边界的最大距离。inline double getDistance(int i) { double s1 = min(abs(x[i] - xa), abs(x[i] - xb)); double s2 = min(abs(y[i] - ya), abs(y[i] - yb)); double ans = min(s1, s2);原创 2020-10-12 23:17:06 · 269 阅读 · 0 评论 -
洛谷—P1331 海战题解
题目链接: P1331 海战题目大意: 在R*C的矩形块中放置船。如果船的位置合法计算出船的数目,否则输出“Bad placement.”题解思路: 这道题的难点在于判断是否有船相邻。通过自己模拟的数据可以得出结论:方法一: 如果图是不和法的,一定存在如下结构:# # . #或# ## .或# .# #或. ## #即在一个2*2的方格中有三个#就表示船的位置放置有错误。inline bool isValid(int x, int y) { int sum =原创 2020-10-07 16:05:24 · 1208 阅读 · 0 评论