搜索
ehi11
这个作者很懒,什么都没留下…
展开
-
Knockout Tournament 水题 hoj
/*先按二叉树的顺序进行存图。然后从上到下扫描输了几个人。在结果累计保存到儿子节点。再从下往上扫描赢了几个人。再把左右儿子的节点保存到父亲节点。*/#include #include #define maxn 100000int a[maxn];struct st{ int l,r;}s[maxn];int main(){ int n; int ca=原创 2012-08-05 06:55:21 · 1090 阅读 · 0 评论 -
Go hdu 4158 hoj 简单搜索
/*搜索中状态加入队列时就要立即更新标志,不能出队的时候更新,否则中间有部分状态会重复搜索造成错误。*/#include #include #include #include using namespace std;int map[21][21];bool vis[21][21];int dx[4]= {1,-1,0,0};int dy[4]= {0,0,-1,1};in原创 2013-01-23 21:36:33 · 1021 阅读 · 0 评论 -
Square DFS poj&hoj
/*这个题的简单比较容易想到。在两个剪枝的情况下。进行DFS。三个参数分别是num表示目前已经组成的边数,len为当前的边的边长,s为枚举木棒的起点。边枚举的顺序从大到小。*/#include #include #include #include using namespace std;int n,size;bool vis[21];int a[21];bool dfs(i原创 2012-09-23 22:34:44 · 523 阅读 · 0 评论 -
Curling 2.0 poj DFS
#include #include int map[21][21];int move[4][2]= {{1,0},{-1,0},{0,1},{0,-1}};int row,col,ans;bool ret;void dfs(int x,int y,int step){ if(step>10) return ; for(int i=0; i<4; i++) {原创 2012-09-23 11:08:03 · 589 阅读 · 0 评论 -
棋盘问题 DFS+回溯
/*DFS+回溯。*/#include #include int n,k,ans;char map[9][9];bool vis[100];bool x[9],y[9];void dfs(int sum,int col){ if(sum>=k) { ans++; return ; } if(col>n) retur原创 2012-09-23 08:26:03 · 894 阅读 · 0 评论 -
A Knight's Journey poj DFS
/*挺好的一道DFS。有几个trick。一个就是方向向量的顺序,不需要遍历每一个起始点,则需要按字母第一关键字,数字第二关键字进行向量方向的安排。然后就是图的行列问题。p行去列,实际上存图的时候是x<=q &&y<=p,这个细节要注意。*/#include #include bool vis[30][30];int ansx[1001];int ansy[1001];int p原创 2012-09-22 23:36:44 · 985 阅读 · 0 评论 -
Oil Deposits poj DFS
/*就是对每一个点作一遍DFS,进行联通块的搜索。*/#include #include char map[101][101];bool vis[101][101];int n,m,ans;int move[8][2]={{1,0},{1,1},{0,1},{-1,1},{-1,0},{-1,-1},{0,-1},{1,-1}};void dfs(int x,int y){原创 2012-09-23 09:22:35 · 550 阅读 · 0 评论 -
Catch That Cow 简单BFS
/*一个很基础的BFS。就是记录步数的时候,之前只用一个变量记录step是不行的。在每一部状态拓展的时候,要用一个数组来记录每一层转台拓展结束后的步数。单用step记录的话会有很多重复的结果。*/#include #include #include using namespace std;const int maxn=200001;int a[maxn];bool vis[原创 2012-09-26 22:29:18 · 554 阅读 · 0 评论 -
八数码问题 经典搜索 bfs
/*这道题a的蛋疼无比啊。学了hash技术和cantor展开。具体的解释都在注释下。不多说了。好题啊!*/#include#include#include using namespace std;typedef int State[9];const int MAXSTATE = 1000000;State st[MAXSTATE], goal;int dist[MAXSTATE]原创 2012-07-29 22:13:37 · 1440 阅读 · 0 评论 -
bfs hoj Going to know him
/*这是一道相对基础的bfs。但是本人目前bfs很菜。所以好好做了下这题。先将0即根节点入队。然后在搜索的过程只要满足map[i][n-1],就返回当前的树深度。只要满足step==0,即未被访问过且map[a[b],b是a的子节点,就将b入队。层次性的拓展搜索,这就是bfs。*/#include #include #include #include using namespace原创 2012-07-29 07:46:04 · 499 阅读 · 0 评论 -
hoj encoding 搜索化的模拟
/*先将字母读入二维数组。然后用四个while实现环形数组的输出。保险的方法可先将数组周围一圈用特殊元素标记,然后移动的时候只需判断是否扫描到特殊元素,是则拐向,然后将已经走过的元素也标记为这一特殊元素,防止数组越界。先判断方向,再移动。*/#include #include #include using namespace std;int原创 2012-06-13 22:36:53 · 436 阅读 · 0 评论 -
黑白图像
/*一道很基础的搜索DFS。对没有访问过的黑色块进行拓展。拓展时以该黑色块为中心拓展他相邻的八个块。存图的时候可以先将周围的一圈标记为白色。防止越界。*/#include #include const int maxn=710;char s[maxn];int dis[maxn][maxn];int mat[maxn][max原创 2012-06-22 23:31:38 · 418 阅读 · 0 评论 -
bfs 较为全面的迷宫路径问题,包括路径的打印,起点到任一点的最小步数.
/*提供的输入数据:输入行数列数 起点终点然后输入任意点的位置,可求起点到终点的距离, 0 0 表示结束.input:6 5 0 0 0 41 1 0 1 11 0 1 1 11 0 1 0 01 0 1 1 11 1 1 0 11 1 1 1 10 41 34 04 40 0output:原创 2012-07-21 20:03:13 · 1808 阅读 · 0 评论 -
uva Fire!
/*有可能存在墙壁将大火全都围住,火蔓延不到的区域*/#include #include #include #include using namespace std;const int maxn=1005;char map[maxn][maxn];bool vis[maxn][maxn];int step[maxn][maxn];struct point{ int x原创 2013-05-28 15:12:18 · 959 阅读 · 0 评论