zoukankan      html  css  js  c++  java
  • 搜索----Dungeon Master

    从S出发,E点逃出,只能走.

    用队列的方法

    三维数组

    #include<stdio.h> #include<string.h> #include<queue> #include<algorithm> using namespace std; #define N 110 int dir[6][3] = {{0,0,1},{0,0,-1},{0,1,0},{0,-1,0},{1,0,0},{-1,0,0}}; char a[N][N][N]; int l,r,c; int x1,y1,z1; int step[N][N][N]; int f; struct point { int x,y,z,s; } now,next; void bfs(int x,int y,int z) { now.x = x; now.y = y; now.z = z; now.s = 0; memset(step,-1,sizeof(step)); step[x][y][z] = 0; queue<point>Q; Q.push(now); while(Q.size()) { now = Q.front(); Q.pop(); if(now.x==x1&&now.y==y1&&now.z==z1) { printf("Escaped in %d minute(s). ",step[now.x][now.y][now.z]); f = 1; return ; } for(int i=0; i<6; i++) { next.x = now.x + dir[i][0]; next.y = now.y + dir[i][1]; next.z = now.z + dir[i][2]; next.s = now.s + 1; if(next.x>=0&&next.x<l&&next.y>=0&&next.y<r&&next.z>=0&&next.z<c&&a[next.x][next.y][next.z]!='#'&&step[next.x][next.y][next.z]==-1) { a[next.x][next.y][next.z]='#'; step[next.x][next.y][next.z] = next.s; Q.push(next); } } } } int main() { int x,y,z; while(scanf("%d%d%d",&l,&r,&c),l+r+c) { f = 0; for(int i=0; i<l; i++) { getchar(); for(int j=0; j<r; j++) { for(int k=0; k<c; k++) { scanf("%c",&a[i][j][k]); if(a[i][j][k] == 'S') { x = i; y = j; z = k; } if(a[i][j][k] == 'E') { x1 = i; y1 = j; z1 = k; } } getchar(); } } bfs(x,y,z); if(!f) printf("Trapped! "); } return 0; }
  • 相关阅读:
    Python 字典方法(.get .item)
    Python格式化输出
    R sprintf函数
    r 中sub() gsub()等匹配与替换函数
    R read.csv数据框
    C#中使用ref、out、params例子
    C#中的三种委托方式:Func委托,Action委托,Predicate委托
    tfs强制撤销解锁命令
    Json序列化与反序列化
    XPath语法在C#中使用XPath示例第二讲
  • 原文地址:https://www.cnblogs.com/biu-biu-biu-/p/5717344.html
Copyright © 2011-2022 走看看