搜索
文章平均质量分 77
saucyJack
外科
展开
-
搜索算法(深度优先和广度优先)(待更新....)
深度优先搜索(DFS):基本思路“:从图中某定点v出发:①访问定点u②依次从u的未被访问的邻接点出发,对图进行深度优先遍历,直至图中和v有路径相通的顶点都被访问。③若此时图中尚有未被访问的定点,则从该顶点出发,重新进行深度优先遍历,直至所有顶点均被访问过为止。DFS算法的具体代码实现:const int maxn=100;bool vst[maxn][maxn原创 2016-02-01 13:21:44 · 263 阅读 · 0 评论 -
POJ 1426(BFS)
题目链接:http://poj.org/problem?id=1426题意:给出一个n,找出n的倍数m,且m由01序列组成,任意输出一个即可。思路:广搜或深搜吧,要不是这道题在搜索系列里面,估计我就直接枚举了。另外,mark一下:有时候C++过不去试一下G++,不知道为何莫名TLE了好几发...#include#include#include#include#include原创 2016-01-27 16:51:13 · 200 阅读 · 0 评论 -
POJ 3126 (BFS)
题目链接:http://poj.org/problem?id=3126题意:给出两个素数,判断能否将第一个素数转换为第二个素数。转换需遵循以下规则:每次只能改变一位数,且改变之后该数为素数,不允许出现前导0的情况。思路:题目比较水..细心一点,按照要求慢慢拍代码就好。#include#include#include#include#include#includeusin原创 2016-01-26 22:01:48 · 194 阅读 · 0 评论 -
POJ 3278(BFS)
题目链接:http://poj.org/problem?id=3278特别水的一道BFS...#include#include#include#include#include#includeusing namespace std;const int INF=0x3f3f3f3f;const int maxn=100010;int T,n,m,k;int x[maxn]原创 2016-01-26 17:16:06 · 165 阅读 · 0 评论 -
POJ 1321 (DFS)
题目链接:http://poj.org/problem?id=1321第一感觉这道题像是八皇后...后来仔细想想还是有点差别。按照八皇后的想法来做的,逐行搜索,放置棋子后标记列,不需要判断对角线。#include#include#include#include#include#includeusing namespace std;const int INF=0x3f3f原创 2016-01-26 17:04:36 · 155 阅读 · 0 评论 -
POJ 2488(DFS)
题目链接:http://poj.org/problem?id=2488题意:国际象棋中,在棋盘上放置一直马,按‘日’字形行走,能否走完棋盘上的所有位置,起点和终点任意,如果存在路径,输出字典需最小的一个。题目看起来倒是挺简单的呃...但是还是做了好久,一直在纠结字典序的问题,注意搜索方向的顺序性,这样可以避免枚举。#include#include#include#includ原创 2016-01-26 15:03:40 · 276 阅读 · 0 评论 -
POJ 3026 (BFS+Prim)
题目链接:http://poj.org/problem?id=3026题意:给出一个迷宫,连接迷宫中所有字母,每一格代价为1,求最小代价。思路:这题wa了9发= =!题目很坑,要不是看了Discuss估计这个寒假都过不去这题。先说一下思路,BFS预处理每一个字母到其他所有字母的距离,用数组记录下来,然后用Prim求出连接所有字母所需要的代价,即最小生成树。这题难点在于一原创 2016-01-24 12:06:43 · 355 阅读 · 0 评论 -
POJ 2965(DFS+枚举)
题目链接:http://poj.org/problem?id=2965题意:4*4矩阵,矩阵上每个元素都有两种符号+和-,每次变换将同行同列元素全部变为相反状态,问需要多少次可以将矩阵所有运算的状态变为+。思路:这道题和1753那道题差不多。题目不会出现Impossible的情况。具体做法是DFS+枚举,每个元素只有两种状态,所有元素共有2^16次状态,代码整体实现和1753差不多原创 2016-01-23 18:39:02 · 479 阅读 · 0 评论 -
POJ 1753(DFS+枚举||BFS+位运算)
题目链接http://poj.org/problem?id=1753题意:给出一个4*4方格,b表示黑棋,w表示白棋,每次选定一个棋子,将其以及相邻点翻转,需要多少次才能使棋子全为白色或者黑色?思路:每次棋子最多只需要翻转1次(翻转偶数次和不翻转一样,翻转奇数次和翻转1次结果一样),所以最多有2^16个不同的状态,直接枚举+DFS回溯就可以判断;另外一种思路,每个棋子的状态用二原创 2016-01-23 10:26:30 · 720 阅读 · 0 评论 -
POJ 3414 (BFS)
题目链接:http://poj.org/problem?id=3414题意:给出三个容器,各有容量A,B,C有以下三种方式:①:装满i②:清空i③把i倒入j中,直至倒满,否则全部全部倒入只要模拟这6中操作就可以了...难点在与打印路径..用map做一个该层与上一层的映射。只能感慨自己写的代码丑到爆了..最后参考了discuss里面的代码...#include原创 2016-01-27 21:23:45 · 345 阅读 · 0 评论 -
POJ 2251(BFS)
题目链接:http://poj.org/problem?id=2251题意:给出一个地牢,有L层,R行C列,问在S处,能否到达E处?如果能,输出最小步数。数据范围30,所以直接用了3维数组,模拟六种情况:上北下南左西右东天上地下。#include#include#include#include#include#includeusing namespace std;con原创 2016-01-28 16:47:14 · 289 阅读 · 0 评论 -
poj 3373 Changing Digits(记忆化搜索)
题目链接:http://poj.org/problem?id=3373参考了网上的一篇博客,感觉讲得很详细附上传送门:http://blog.csdn.net/lyy289065406/article/details/6698787/#include#include#include#include#includeusing namespace std;const int原创 2016-02-17 10:05:14 · 252 阅读 · 0 评论 -
poj 1724 ROADS
传送门:http://poj.org/problem?id=1724注意有重边!①Dijsktra+优先队列(16ms):#include#include#include#include#includeusing namespace std;const int INF=0x3f3f3f3f;const int maxn=10010;int T,n,k,r,e;i原创 2016-02-16 16:49:12 · 206 阅读 · 0 评论 -
poj 3411 Paid Roads(DFS)
题目链接:http://poj.org/problem?id=3411题意:有n座城市,编号1~n,从a到b如果已经经过c城市,则需要p费用,否则需要r费用,问从1到n的最小费用是多少。①DFS:#include#include#include#include#includeusing namespace std;const int INF=0x3f3f3f3f;con原创 2016-02-14 16:30:12 · 260 阅读 · 0 评论 -
poj 1129(DFS+四色定理)
之前练习二分图的时候有接触过染色法,用01染色法判断一个图是否是二分图,而这道题是进行图的染色,求最少最需要的着色数。第一次接触到四色定理,对于任何一个无向图着色,最多只需要4种颜色即可,具体证明参考网上的资料吧,我也不太会= =!用DFS枚举所有可能,如果贪心的话可能过不了(因为数据比较水),求出满足条件的最小着色数。#include#include#includeus原创 2016-02-05 00:16:10 · 552 阅读 · 0 评论 -
poj 1416 Shredding Company(DFS)
题目链接:http://poj.org/problem?id=1416用DFS暴搜,枚举出所有状态,直至搜索完毕,计算最小值。我是用map来标记出现次数,开数组太浪费空间了。具体代码如下(变量有点多= =!):#include#include#includeusing namespace std;const int maxn=10;char tarNum[maxn],s原创 2016-02-04 19:39:38 · 224 阅读 · 0 评论 -
POJ 2531 Network Saboteur(DFS+剪枝)
题目链接:http://poj.org/problem?id=2531有n个点,给出任意两点之间的权值,现在将点分别放入A集合或者B集合,求两个集合的权值之和的最大值。直接暴力过去也没什么问题,110ms,加了一个剪枝到47ms。初始认为所有集合都在A中,然后枚举将点加入B中。具体解释见代码:#include#include#include#include#incl原创 2016-02-04 10:15:27 · 216 阅读 · 0 评论 -
POJ 3009(Dfs)
题目链接:http://poj.org/problem?id=3009题意:冰壶在冰面上滑行,直至遇到石块或者出界才会静止,遇到石块会直接将石块击碎,并且停留与石块的相邻的格子上,给定起点S和终点G,判断冰壶能否在10次以内从S滑行到G,如果能,求最小次数。因为每次搜索地图都会改变,所以Bfs行不通,可以用Dfs+回溯来实现这一点。每次向一个方向一直遍历,直至无法滑行,然后改变地图继续原创 2016-01-29 09:28:40 · 781 阅读 · 0 评论 -
POJ 3083(DFS+BFS)
题目链接:http://poj.org/problem?id=3083题意:给出一个迷宫,s为qdi原创 2016-01-28 20:21:58 · 296 阅读 · 0 评论 -
八数码的八境界(待更新...)
附上传送门:八数码的八境界写的很棒的一篇博客。题目链接:POJ1077EightTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 30591Accepted: 13309 Special JudgeDescriptionThe 15-puzzle has been ar原创 2016-10-01 15:57:59 · 758 阅读 · 1 评论