搜索
文章平均质量分 75
ElephantFlySong
这个作者很懒,什么都没留下…
展开
-
POJ2697(BFS)
题目链接:http://poj.org/problem?id=2697 只是状态的储存问题,可以把棋盘拉成长度为16的字符串,用map来储存就可以。 #include #include #include #include #include #include using namespace std; const int dx[8] = {-1,-1,-1,0,0,1,1,1}; c原创 2016-09-18 08:30:30 · 318 阅读 · 0 评论 -
POJ2531
题目链接:http://poj.org/problem?id=2531 最大割,不过由于数据范围很小,直接DFS子集生成就可以了。 分成两个子集A和B,一开始所有的点都在A集合里面,DFS决策每一个点是继续留在A集合还是移动到B集合里面去。继续留在A里面的话对现有的代价总和没有影响,移动到集合B的话就让现有的总和加上该点与集合A中其它所有点的边,同时减去该点与集合B中所有其它点的边。 #in原创 2016-09-18 08:39:28 · 605 阅读 · 0 评论 -
POJ1915(Knight Moves,双向BFS)
题目链接:http://poj.org/problem?id=1915 用两个队列 Q和 P,Q用来储存正向搜索的节点,P用来储存逆向搜索的节点;在地图中进行染色,正向搜索到的节点染色为1,逆向搜索到的节点染色为2,当正向搜索到染色为2的节点时或者逆向搜索到染色为1的节点时表示两者相遇;还要标从起点(或终点)到当前位置所需要的步数,当相遇的时候起点到该点的距离加上重点到该点的距离就是起点到终点的原创 2016-08-22 13:56:07 · 1459 阅读 · 0 评论 -
POJ1376(A*)
题目链接:http://poj.org/problem?id=1376 优先队列默认为大根堆,如果是结构体的比较或者是小根堆的话要自定义cmp函数,但是这里cmp函数和sort里的函数是不一样的,要这样定义: struct cmp { bool operator () (int a, int b) { return a > b; //在sort中返回的是 a原创 2016-09-04 16:00:42 · 464 阅读 · 0 评论 -
POJ1324(Astar)
题目链接:http://poj.org/problem?id=1324 状态记录:只记录头的位置,其他的部分只要从头部开始沿着连续的方向走就好了,所以只要记录身体与前一段的方向即可。 单纯的BFS也能做,这里作为练习用A*。 先贴A*模板 struct node { type s; int f, g, h; }st,ed; short c[]; int f[]; stru原创 2016-10-27 23:09:23 · 676 阅读 · 0 评论 -
POJ1077(8数码问题)
题目链接:http://poj.org/problem?id=1077 这个用BFS、双向BFS、Astar都能解决,这里先用双向BFS来做。 因为要输出路径,多以不能直接用STL中的queue容器,不然出队后就找不到了,所以就自己封装了一个队列,用数组模拟的,还增加了输出路径的功能,留下来当做模板来用。 这里让空格走四个方向,把状态按照题目给的方式排成一列,用康拓展开来记录状态,用两个队列原创 2016-08-24 14:49:04 · 443 阅读 · 0 评论 -
ecnu3260(袋鼠妈妈找孩子)
题目链接:http://acm.ecnu.edu.cn/problem/3260/ 仍然是搜索,暴力,每尝试一个方向,就把另外的几个方向全部堵死(造墙),如果搜到终点时步数大于等于k,则停止一切搜索,输出地图。 尝试四个方向的时候不知道具体有哪几个方向可以通行,就先把几个方向保留下来,根据方向的个数来判断堵死哪几个方向。 #include #include #include using原创 2017-05-18 19:37:13 · 333 阅读 · 0 评论 -
51nod1060(最复杂的数)
题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1060 对于一个合数 x ,分解质因数为 x = p1^a1 * p2^a2 *……*pk^ak; 从这些质因子里面选出一些乘起来,就是 x 的一个因子,假设为 y ; 对于这个合数的每一个质因子,都有 a1+1 种选择(选出0个、1个、2个……a1个该因原创 2017-07-30 11:27:09 · 325 阅读 · 0 评论