![](https://img-blog.csdnimg.cn/20190927151117521.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
搜索
文章平均质量分 70
搜索
RocSin
这个作者很懒,什么都没留下…
展开
-
POJ 1426 Fine The Multiple BFS 深搜
/** * 搜索题:BFS * 一开始这题题意理解错了,以为01串是二进制表示,题意是十进制表示。 * 用BFS的思路就是, 首先顶点就是1,放入队列中,每次对队首元素的操作就是 * 在该数的后面添加1或者0得到两个新的数newx, newy后判断是否是n的倍数,是的话break * 不是的话放回队列继续循环。 * 这题一开始wa了,不知道怎么错的,之后把数组弄大之后就A了原创 2013-05-16 13:01:31 · 554 阅读 · 0 评论 -
POJ 2935 Basic Wall Maze 深搜 dfs
/** * DFS: 深搜题 * 这题需要输出移动步骤,所以用深搜可以记录步骤。 * 关键是地图的建立。 依题墙是1 * n 的,换句话说墙是不占格子的, * 在地图上只是一条线。 所以在建立地图的时候用二维数组map[i][j] 然而对应的格子坐标应该是 i / 2, j / 2 * 也就是把输入给的格子坐标都扩大两倍,而且在移动的是也是+2 -2 的移动,这样在两个格子之原创 2013-07-28 07:19:03 · 744 阅读 · 0 评论 -
UVa 10651 Pebble Solitaire 记忆化搜索+位运算
/** * 位运算+记忆化搜索: * 这题就当做是熟悉熟悉位运算,练练简单的记忆化搜索的。 * 要是熟悉了位运算,这题其实很容易的。 * 依题意: 一排有12个位置,这样用int去压缩也是很足够的。 * 对于一个数的每个位, 0表示空,1表示有。 * 然后遍历的时候三个三个去分析,然后dfs记忆化搜一下就行了。 */ #include #原创 2013-07-31 10:12:08 · 801 阅读 · 0 评论 -
UVa 216 - Getting in Line 回溯,简单递归枚举
刚接触回溯,最基础的回溯,做了近两小时,终于调出来了 (介于初学,代码质量不高,仅供参考,大神走开。。)。 回溯要注意的是: 递归的入口和出口, 进入的时候的形参和出来的答案是否遍历所有该遍历的,或者说完成了一次深搜(也就是完成了一次所有该选的数据, 比如八皇后的一次枚举就是选齐八个皇后,本题则是连接了所有的点),当然在所有遍历完后是否得到了正确答案,比如这题,是否得到了最小距离原创 2013-04-15 11:32:32 · 830 阅读 · 0 评论 -
UVa 165 - Stamps 深搜
/** * 两个深搜! 下述的币值和面值是不一样的,币值是总的价值,面值是一张的价值。 * 一个是总的深搜,或者说就是枚举选取哪几种面值可以使得答案最大。 * 还一个是深搜来判断是否用当前已选择的面值在h(张数)的限制下能够获得当前币值。 * 其实,关键在于选择,比如,遇到一个面值,分为选择它或者不选择它,以此进行深搜, * 判断的时候也是如此, Choose or not原创 2013-04-22 11:19:46 · 730 阅读 · 0 评论 -
UVa 10344 - 23 out of 5 全排列递归回溯
一开始无数次WA, 实在不知道错在哪里,最后看了别人代码才发现 用next_permutation()之前是该数组最下值,但是也要dfs()!!!!! 也就是说在用next_permutation() 之前还有一次递归!!!! #include #include #include using namespace std; bool ok; int num[原创 2013-04-16 23:30:02 · 809 阅读 · 0 评论 -
递归回溯 暴力枚举 (总结)
怎么说呢? 一点一点记吧,哪些要注意的记下来以后再给自己翻翻的时候看的。 总之! 不能让一个坑把你绊倒无数次。 回溯法: 1、经常用到的 next_permutation() : 生成全排列的,是按升序生成的, 要注意与pre_permutation() 的区别,降序和升序,一般情况下用前面那个就行了。但是!!千万注意,在枚举所有情况进行深搜的时候,数组A的第一次,也就原创 2013-04-22 11:42:22 · 2481 阅读 · 0 评论 -
POJ 2506 递归 + 高精度
这题一开始自己做的是用二维数组,结果发现传参弄的太乱了 。。 直接看人代码了,恍然大悟啊。。怎么就没想到用结构体数组诶…… 直接贴人代码了 递归加高精度。。 规律是算前几个发现的, 可是硬是从理论方面,不知道怎么得来的。。。知道的大神们求教下。。。 f(n) = 2 * f(n -2) + f(n - 1) //原创 2013-03-05 22:46:55 · 2144 阅读 · 1 评论 -
POJ 2488 A Knight's Journey DFS 深搜回溯
/** * DFS 深搜回溯 * 题意: 骑士走遍所有各自r*c,且每个格子只走一次。 如果可以走完 * 输出字典序最小的path,不能就impossible * 在每次向下dfs的,记录path,当走到叶子节点的时候,也就是不能再向下走的时候,return * 用cur记录已踩格子数,当cur等于tot的时候说明全部踩过,再把得出的str和ans比较, * 如果字典序小的话,替换an原创 2013-05-22 16:40:02 · 657 阅读 · 0 评论 -
UVa 301 - Transportation 回溯
不得不说,这题TLE让我A的好痛苦。。。 TLE的想法:首先想到的是回溯,和平常一样,枚举了所有情况,最关键的在于设了个标记数组vis, 记录每个路段是否被访问过,而且还是每次遍历从vis数组最开头遍历,遇到未访问的就再次选择并往下深搜。。 看似没什么大不了,可是TLE就出在这了!! 按这思路,变成了求全排列,也就是把顺序也考虑进去了(比如:最终答案是选择标号为 1、2、3、4的 可是在原创 2013-04-16 17:12:31 · 631 阅读 · 0 评论 -
167 - The Sultan's Successors 八皇后(回溯法)
/** * 八皇后大水题, 回溯 * 对数组预处理下,先把所有可能计算出来,存在数组里,也就是把每种情况的八个皇后的坐标记下来。 有92种。 * 然后再接收输入数据,根据之前处理好的数组,每次计算每种情况的sum,找出最大的输出就行了。 * 回溯题找出92种情况。。这是最经典最简单的回溯了,也没什么好说的了呃。。 * 那个判断是否在同一条斜线上的方法也是看《入门经典》里的,横纵坐标相加,原创 2013-04-25 14:25:34 · 540 阅读 · 0 评论 -
POJ 1077 Eight BFS + 康拓展开式
Accepted 6588K 329MS C++ 3890B 2013-05-20 23:43:40 康拓展开式: http://blog.csdn.net/xuruoxin/article/details/8951913 /** * 这题做了我一晚上啊! 半晚上写代码,半晚上debug。 最后发现错在两个变量的名原创 2013-05-20 23:55:18 · 1028 阅读 · 0 评论 -
POJ 3414 Pots (BFS搜索题)
/** * 搜索题 BFS: * 关键就是 状态转移,和判重。 * 这里用isVis[i][j]表示之前搜索的时候是否访问过a桶和b桶存有i j升水 * 如果访问过则不再加入队列。 因为题目要求的是最短路径,如果再次访问, * 所需操作次数必然更大,所以当第一次访问的时候就要设vis的值为1表示已访问。 * 答案输出我用的是stack栈去存储。 因为之前在每次放入队列的时原创 2013-05-19 23:45:07 · 649 阅读 · 0 评论 -
poj 1252 Euro Efficiency 简单BFS
/** * 简单BFS: 可是WA了7次,最后在绝望之下把G++ 换C++ 居然A了。。A了 * 题意:给你6中不同的货币, 去用最佳方案(用最少的个数)去凑 1-100 的币值(可加可减) * 可加可减就是说: 比如你要换67的币值, 手头有70 和 3 面值货币。就可以给70找3所以最少需要2个货币。 * 题目输出就是 凑出 1-100的面值的最佳方案的平均值。 和最佳方案中原创 2013-08-10 20:59:01 · 970 阅读 · 0 评论