题目链接:https://vijos.org/p/1360 题目大意: 3x3格子上放1~8数字,一个空位,每次空位可与上下左右交换,固定终止布局,求输入的起始布局需要几步到达终止布局 题目思路: 一眼题BFS,宽搜即可,判重我比较暴力直接把状态记下,没hash、cantor什么的。 ...
分类:
其他好文 时间:
2016-03-24 01:15:03
阅读次数:
224
真是不容易啊,做这道题的时候脑子一团乱,感觉还是得劳逸结合啊。这道题的思想不难,就是宽搜BFS。通过设置一个flag来判断是否需要逆序输出。 我的做法虽然AC,但是觉得代码还是不好,空间占用较多。
分类:
其他好文 时间:
2016-03-13 22:28:37
阅读次数:
263
因为这个题做了两次犯了两次不同的错误、 第一次用的dfs死活都超时 第二次把定义队列定义在了全局变量的位置,导致连WA了几次、最后找到原因的我真的想一巴掌拍死自己 1 #include<cstdio> 2 #include<cstring> 3 #include<queue> 4 using nam
分类:
其他好文 时间:
2016-02-06 18:25:37
阅读次数:
306
广搜与深搜的小区别 一般来说,广搜常用于找单一的最短路线,或者是规模小的路径搜索,它的特点是"搜到就是最优解", 而深搜用于找多个解或者是"步数已知(好比3步就必需达到前提)"的标题,它的空间效率高,然则找到的不必定是最优解,必需记实并完成全数搜索,故一般情况下,深搜需要很是高效的剪枝(优化). 像
分类:
其他好文 时间:
2016-02-02 22:26:26
阅读次数:
571
翻译给定两个二叉树,写一个函数检查他们是否相等。两个二叉树如果结构上相同并且有相同的值,那么就认定他们是相等的。原文Given two binary trees, write a function to check if they are equal or not.Two binary trees are considered equal if they are structurally ident...
分类:
其他好文 时间:
2016-01-11 14:07:08
阅读次数:
135
解题思路:简单的宽搜,见代码: 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 const int maxn = 105; 7 int S, n, m, cap[3], vis[maxn][maxn]; 8 ....
分类:
其他好文 时间:
2015-10-12 20:46:55
阅读次数:
192
解题思路:简单宽搜,关键是剪枝。 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 const int maxn = 100005; 7 int vis[maxn]; //标记这个点是否走过 8 int n, k...
分类:
其他好文 时间:
2015-10-04 14:45:07
阅读次数:
163
解题思路:三维数组,简单宽搜,注意细节。 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 const int maxn = 35; 7 int dir[6][3] = {0, 0, 1, 0, 0, -1, 0...
分类:
其他好文 时间:
2015-10-04 13:33:32
阅读次数:
198
常规的宽搜,每个方向上都一路走到’X‘为止如果不加以判重,理论上是对的,但是会做大量无用的计算,要么超时要么数组越界,只能得30分不过,这里的判重并不是指每个点只能经过一次,而是指在一层搜索中,每个点只能经过一次,搜索下一层时,判重数组要清空程序如下:program ex1026;type node...
分类:
其他好文 时间:
2015-09-10 19:08:24
阅读次数:
225
题意是给一个二维的迷宫,求任意一个点以最优方案走到出口的步数。求这些点中里出口最远的一个点的步数。迷宫有两个出口。做法是从两个出口各做一遍宽度优先搜索,然后就得到了所有点离当前门口最近的距离。在step数组中记录下最短距离,然后两边宽搜取最小值。然后遍历step数组,输出最大的一个就是答案。/*ID...
分类:
其他好文 时间:
2015-09-06 12:55:22
阅读次数:
144