搜索入门
来源:互联网 发布:域名提供商查询 编辑:程序博客网 时间:2024/05/16 01:30
一.迷宫的最短路径题意
一个N*M的迷宫,每一步可以向上下左右移动,求从起点到终点的最短路径
二.解法
typedef pair<int,int> P;char Mz[MXN][MXM]; // 迷宫数组int N,M;int sx,sy;int gx,gy;int d[MXN][MXM];//距离数组int dx[4]={1,0,-1,0},dy[4]={0,1,0,-1};int Bfs(){ queue<P> que; for(int i=0;i<N;++i) for(int j=0;j<M;++j) d[i][j]=INF; que.push(P(sx,sy)); d[sx][sy]=0; while(q.size()) { P p=que.front();que.pop(); if(p.first ==gx &&p.second==gy) break; for(int i=0;i<4;++i) { int nx=p.first+dx[i]; int ny=p.second+dy[i]; if(0<=nx&&nx<N&&0<=ny&&ny<M&&maze[nx][ny]!='#'&&d[nx][ny]==INF) { que.push(P(nx,ny)); d[nx][ny]=d[p.first][p.second]+1; } } } return d[gx][gy];}
三.宽度搜索与深度搜索区别
bfs需要与状态数成正比的内存空间.Dfs所需内存是与最大递归深度成正比的
四.枚举n!
bool used[MXN];int perm[MXN];//生成n!种排列void permutation(int pos,int n){ if(pos==n){ //这里写需要对perm进行的操作 return; } for(int i=0;i<n;++i){ if(!used[i]){ perm[pos]=i; used[i]=true; permutation1(pos+1,n); used[i]=false; } } return ;}
- 搜索入门
- 搜索入门
- 搜索入门
- 搜索入门
- 搜索入门
- 【搜索入门】搜索字符串
- lucene 搜索入门实例
- Google搜索 入门 1
- Google搜索 入门 2
- Google搜索 入门 3
- Google搜索 入门 4
- 浅谈搜索入门
- ElasticSearch入门-搜索
- hdu入门搜索题
- 搜索入门2
- 二分搜索入门
- Google搜索入门
- Training:搜索入门
- 一个概率的思考
- oracle 11g R2 单实例 ASM 启动:ORA-29701:+unable+to+connect+to+Cluster+Synchronization+Service
- 创建多个圆对象并计算这些圆的总面积。
- android备忘录之---Activity生命周期进阶
- ajax实现在注册时检测用户名是否注册过。
- 搜索入门
- linux系统编译C++程序时头文件和库文件搜索路径
- hdu 3032 Nim or not Nim? 博弈(SG定理+找规律)
- JSP当中的条件表达式
- 在mac pro 上使用 gcc 命令
- MAC 上搭建lua
- 3.Linux文件基本操作管理
- Linux Socket编程(不限Linux)
- 让Visual Studio 2012不显示输出窗口