简单搜索入门
来源:互联网 发布:印象笔记 数据迁移 编辑:程序博客网 时间:2024/05/21 17:46
点击打开链接
poj 2251 duugeon master(三维)
#include <iostream>#include <stdio.h>#include <string.h>#include <queue>#include <string>#include <map>#define Y 0x3f3f3f3fusing namespace std;int n,m,z,mark[31][31][31],l;int dir[6][3]={{-1,0,0},{1,0,0},{0,-1,0},{0,1,0},{0,0,-1},{0,0,1}};char mapp[31][31][31];struct node{int x,y,z,step;}u,v;bool judge(int x,int y,int zz){if(x>=0&&x<n&&y>=0&&y<=m&&zz>=0&&zz<z&&mark[zz][x][y]==0&&mapp[zz][x][y]!='#')return true;return false;}void bfs(int sx,int sy,int sz){int i;queue<node>q;u.x=sx,u.y=sy,u.z=sz,u.step=0,mark[sz][sx][sy]=1;q.push(u);while(!q.empty()){u=q.front(),q.pop();if(mapp[u.z][u.x][u.y]=='E'){l=1;printf("Escaped in %d minute(s).\n",u.step);return ;}for(i=0;i<6;i++){v.x=u.x+dir[i][0];v.y=u.y+dir[i][1];v.z=u.z+dir[i][2];if(judge(v.x,v.y,v.z)){mark[v.z][v.x][v.y]=1;v.step=u.step+1;q.push(v);}}}}int main(){int i,j,k,sx,sy,sz;while(scanf("%d %d %d",&z,&n,&m)&&z&&n&&m){getchar();for(k=0;k<z;k++){for(i=0;i<n;i++){for(j=0;j<m;j++){scanf("%c",&mapp[k][i][j]);if(mapp[k][i][j]=='S')sx=i,sy=j,sz=k;}getchar();}getchar();}memset(mark,0,sizeof(mark));l=0;bfs(sx,sy,sz);if(l==0)printf("Trapped!\n");}return 0;}hdu 1312 red and black
#include <iostream>#include <stdio.h>#include <string.h>#include <queue>using namespace std;int mark[22][22],n,m,times,dir[4][2]={{-1,0},{1,0},{0,-1},{0,1}};char mapp[22][22];struct node{ int x,y,step;}u,v;void bfs(int x,int y){ queue<node>q; int i; u.x=x,u.y=y,u.step=0,mark[u.x][u.y]=1; q.push(u); while(!q.empty()){ u=q.front(),q.pop(); if(mapp[u.x][u.y]=='.'||mapp[u.x][u.y]=='@'){ times++; } for(i=0;i<4;i++){ v.x=u.x+dir[i][0]; v.y=u.y+dir[i][1]; if(v.x>=0&&v.x<n&&v.y>=0&&v.y<m&&mark[v.x][v.y]==0&&mapp[v.x][v.y]=='.'){ v.step=u.step+1; mark[v.x][v.y]=1; q.push(v); } } }}int main(){ int i,j; while(scanf("%d %d",&m,&n)&&m&&n){ getchar(); memset(mark,0,sizeof(mark));times=0; for(i=0;i<n;i++){ for(j=0;j<m;j++) scanf("%c",&mapp[i][j]); getchar(); } for(i=0;i<n;i++) for(j=0;j<m;j++) if(mapp[i][j]=='@') bfs(i,j); printf("%d\n",times); } return 0;}
csu 1511 残缺的棋盘
#include <iostream>#include <stdio.h>#include <string.h>#include <queue>using namespace std;int a1,a2,b1,b2,c1,c2;int mark[10][10],dir[8][2]={{-1,0},{1,0},{0,-1},{0,1},{-1,1},{-1,-1},{1,-1},{1,1}};char mapp[10][10];struct node{ int x,y,step;}u,v;void bfs(){ queue<node>q; int i; u.x=a1,u.y=a2,u.step=0,mark[u.x][u.y]=1; q.push(u); while(!q.empty()){ u=q.front(),q.pop(); if(u.x==b1&&u.y==b2){ printf("%d\n",u.step); return ; } for(i=0;i<8;i++){ v.x=u.x+dir[i][0]; v.y=u.y+dir[i][1]; if(v.x>0&&v.x<=8&&v.y>0&&v.y<=8&&mark[v.x][v.y]==0){ v.step=u.step+1; mark[v.x][v.y]=1; q.push(v); } } }}int main(){ int l=0; while(scanf("%d %d %d %d %d %d",&a1,&a2,&b1,&b2,&c1,&c2)!=EOF){ memset(mark,0,sizeof(mark));l++; mark[c1][c2]=1;///把不能走的点标记就是简单的bfs了 printf("Case %d: ",l); bfs(); } return 0;}hdu 1702 ACboy need your help agin
#include <iostream>#include <stdio.h>#include <string.h>#include <queue>#include <stack>using namespace std;int main(){ int T,i,t,n,m; char s1[30];char s2[30]; scanf("%d",&T); while(T--){ scanf("%d%*c%s",&n,s1); if(strcmp(s1,"FIFO")==0){ queue<int>q; while(!q.empty()) q.pop(); for(i=0;i<n;i++){ scanf("%s",s2); if(strcmp(s2,"IN")==0){ scanf("%d%*c",&m); q.push(m); } else{ if(q.size()<1){ printf("None\n"); continue; } t=q.front(),q.pop(); printf("%d\n",t); } } } if(strcmp(s1,"FILO")==0){ stack<int>p; while(!p.empty()) p.pop(); for(i=0;i<n;i++){ scanf("%s",s2); if(strcmp(s2,"IN")==0){ scanf("%d%*c",&m); p.push(m); } else{ if(p.size()==0){ printf("None\n"); continue; } t=p.top(),p.pop(); printf("%d\n",t); } } } } return 0;}hdu 1548 A strange lift
#include <iostream>#include <stdio.h>#include <memory.h>#include <queue>using namespace std;int N, s, t,a[205],mark[205], flag;struct node{ int x, step;}n1, n2, m;int main(){ int i; while(scanf("%d", &N), N) { if(N == 0) break; scanf("%d %d", &s, &t); for(i = 1; i <= N; i++) scanf("%d", &a[i]); memset(mark,0,sizeof(mark)); flag=0; n1.x = s; n1.step = 0; mark[n1.x] = true; queue<node> Q; Q.push(n1); while(!Q.empty()) { m = Q.front(); Q.pop(); if(m.x == t) //到达目标 { flag=1; printf("%d\n",m.step); break; } n1.x = m.x - a[m.x]; n2.x = m.x + a[m.x]; if(n1.x>0 && n1.x<=t && !mark[n1.x]) //下去的 { n1.step = m.step + 1; mark[n1.x] =1; //标记 Q.push(n1); } if(n2.x>0 && n2.x<=t && !mark[n2.x]) //上去的 { n2.step = m.step + 1; mark[n2.x] = 1; //标记 Q.push(n2); } } if(!flag) printf("-1\n"); } return 0;}hdu 1240 Astreroids
#include <iostream>#include <stdio.h>#include <string.h>#include <queue>using namespace std;char mapp[11][11][11];int mark[11][11][11],n,times,sx,sy,sz,ex,ey,ez,ff;int dir[6][3]={{-1,0,0},{1,0,0},{0,-1,0},{0,1,0},{0,0,1},{0,0,-1}};struct node { int xx,yy,zz,step;}u,v;int bianjie(int x,int y,int z){ if(x>=0&&x<n&&y>=0&&y<n&&z>=0&&z<n&&(mapp[z][x][y]=='O')&&mark[z][x][y]==0) return 1; return 0;}void bfs(int sx,int sy,int sz){ queue<node>q; int i; u.xx=sx,u.yy=sy,u.zz=sz,times=0;mark[sz][sx][sy]=1; q.push(u); while(!q.empty()){ u=q.front(),q.pop(); //printf("%d %d %d %d\n",u.xx,u.yy,u.zz,u.step); if(u.xx==ex&&u.yy==ey&&u.zz==ez){ ff=1;times=u.step;printf("%d %d\n",n,times);return ; } for(i=0;i<6;i++){ v.xx=u.xx+dir[i][0]; v.yy=u.yy+dir[i][1]; v.zz=u.zz+dir[i][2]; if(bianjie(v.xx,v.yy,v.zz)==1){ mark[v.zz][v.xx][v.yy]=1;v.step=u.step+1; q.push(v); } } }}int main(){ int i,j,k; char s1[20],s2[20]; while(scanf("%s %d",s1,&n)!=EOF){ getchar(); for(i=0;i<n;i++){ for(j=0;j<n;j++){ for(k=0;k<n;k++) scanf("%c",&mapp[i][j][k]);getchar(); } } scanf("%d %d %d",&sx,&sy,&sz); scanf("%d %d %d",&ex,&ey,&ez); getchar();gets(s2);if(n==1&&sz==ez&&sx==ex&&sy==ey){ printf("1 0\n"); continue; } memset(mark,0,sizeof(mark));ff=0; bfs(sx,sy,sz); if(ff==0) printf("NO ROUTE\n"); } return 0;}
0 0
- 简单搜索入门
- 简单搜索入门
- 简单搜索入门
- ElasticSearch入门-搜索如此简单
- 深度优先搜索简单入门
- lucene入门-简单的WEB搜索界面
- JAVA:lucene 入门学习,简单实例模访google搜索
- 全文检索Lucene入门之创建索引及简单搜索
- [HNOI2002]营业额统计 二叉搜索树的简单入门 splay
- 搜索入门(DFS)最简单的部分和问题
- Elasticsearch(一)-入门以及简单的搜索语法
- Lucene.NET使用入门(二)【简单的搜索网站示例】
- 简单搜索入门(二):二分答案 HDU 5248
- 搜索入门
- 搜索入门
- 搜索入门
- 搜索入门
- 搜索入门
- Android开发之如何保证Service不被杀掉(前台服务)
- 2463 -- Bungee Jumping
- 初识php
- HDU 2099 整除的尾数
- wind pandas 数据分析绘图
- 简单搜索入门
- @property 关键字的区别详解
- string.php
- 聪明的质监员
- Qt线程使用杂谈
- 【图论】强连通分量和拓扑排序
- 初识php2
- This is my first post
- Android Studio NDK环境配置(opencv)以及使用