是一个图论的基础搜索题~

没什么好说的就是搜索就好 主要是别把 代码写的太屎,错了不好找

#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
int sx,sy,ex,ey;
struct info
{
int x,y;
char ko;
int qian;
};
info que[40];
bool flag[10][10];
int n,m;
bool vi[10][10][4];
int d[4][2]={-1,0,1,0, 0,-1, 0, 1};
char dd[5]={"WENS"};
void print(int p)
{
if(p!=0) print(que[p].qian);
if(p!=0)printf("%c",que[p].ko);
}
bool jude(int x,int y)
{
return x>=1&&y>=1&&x<=6&&y<=6&&flag[x][y]==0;
}
void solve()
{
int h=0,r=1;
int x,y,x0,y0;
que[0].x=sx,que[0].y=sy;
flag[sx][sy]=1;
while(h!=r)
{
x=que[h].x;
y=que[h].y;
h++;
for(int i=0;i<4;i++)
{
if(vi[x][y][i])
{
x0=x+d[i][0];
y0=y+d[i][1];
if(jude(x0,y0))
{
flag[x0][y0]=1;
que[r].x=x0;
que[r].y=y0;
que[r].qian=h-1;
que[r].ko=dd[i];
if(x0==ex&&y0==ey) {print(r);return ;}
r++;
}
}
}
}
}
int main()
{
int a,b,c,d;
while(~scanf("%d%d",&sx,&sy))
{
if(sx==0&&sy==0) break;
memset(vi,1,sizeof(vi));
memset(flag,0,sizeof(flag));
scanf("%d%d",&ex,&ey);
for(int i=0;i<3;i++)
{
scanf("%d%d%d%d",&a,&b,&c,&d);
if(a==c)
{
for(int i=min(b,d)+1;i<=max(b,d);i++)
vi[a][i][1]=0,vi[a+1][i][0]=0;
}
else if(b==d)
{
for(int i=min(a,c)+1;i<=max(a,c);i++)
vi[i][b][3]=0,vi[i][b+1][2]=0;
}
}
solve();printf("\n");
}
return 0;
}

  

poj 2935 Basic Wall Maze的更多相关文章

  1. HDU 1484 Basic wall maze (dfs + 记忆)

    Basic wall maze Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  2. poj-2935 BFS Basic Wall Maze

    Basic Wall Maze Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 3384   Accepted: 1525   ...

  3. Basic Wall Maze

    poj2935:http://poj.org/problem?id=2935 题意:在6*6的格子中,有一些,如果两个格子之间有墙的话,就不能直接相通,问最少要经过几步才能从起点走到终点.并且输出路径 ...

  4. 【HDOJ】1484 Basic wall maze

    BFS. /* 1484 */ #include <iostream> #include <queue> #include <string> #include &l ...

  5. 【POJ 3026】Borg Maze

    id=3026">[POJ 3026]Borg Maze 一个考察队搜索alien 这个考察队能够无限切割 问搜索到全部alien所须要的总步数 即求一个无向图 包括全部的点而且总权值 ...

  6. POJ 3026 : Borg Maze(BFS + Prim)

    http://poj.org/problem?id=3026 Borg Maze Time Limit: 1000MS   Memory Limit: 65536K Total Submissions ...

  7. (POJ 3026) Borg Maze 最小生成树+bfs

    题目链接:http://poj.org/problem?id=3026. Description The Borg is an immensely powerful race of enhanced ...

  8. 【POJ】1113 Wall(凸包)

    http://poj.org/problem?id=1113 答案是凸包周长+半径为l的圆的周长... 证明?这是个坑.. #include <cstdio> #include <c ...

  9. POJ 1113:Wall(凸包)

    http://poj.org/problem?id=1113 Wall Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 346 ...

随机推荐

  1. 基于libevent, libuv和android Looper不断演进socket编程 - 走向架构师之路 - 博客频道 - CSDN.NET

    基于libevent, libuv和android Looper不断演进socket编程 - 走向架构师之路 - 博客频道 - CSDN.NET 基于libevent, libuv和android L ...

  2. Hadoop大数据面试--Hadoop篇

    本篇大部分内容參考网上,当中性能部分參考:http://blog.cloudera.com/blog/2009/12/7-tips-for-improving-mapreduce-performanc ...

  3. LIS(最长的序列)和LCS(最长公共子)总结

    LIS(最长递增子序列)和LCS(最长公共子序列)的总结 最长公共子序列(LCS):O(n^2) 两个for循环让两个字符串按位的匹配:i in range(1, len1) j in range(1 ...

  4. 【Nginx】启动过程

    从应用程序的启动过程中main功能开始跟踪. 解析命令行參数并保存到ngx_cycle_t结构体中,在ngx_process_options函数中将保存配置文件路径. 调用ngx_add_inheri ...

  5. Cocos2dx项目启程一 之 封装属于我的精灵类

    给自己的假期就快要结束了,该要做点事情了,哪怕简单的不好的也比不做的有意义. /*#pragma once 保证头文件只被编译一次 #pragma once是编译器相关的,就是说即使这个编译系统上有效 ...

  6. Android从raw、assets、SD卡中获取资源文件内容

    先顺带提一下,raw文件夹中的文件会和project一起经过编译,而assets里面的文件不会~~~   另外,SD卡获取文件需要权限哦! //从res文件夹中的raw 文件夹中获取文件并读取数据 p ...

  7. NTFS权限设置时卡死

    客户是一家技术咨询和零部件制造的小公司,使用的文件服务器为R410上插4块1T硬盘做raid 5,服务器操作系统为windows server 2008R2,所有的设计资料的授权都是结合域账户和NTF ...

  8. UVA12304 2D Geometry 110 in 1! 计算几何

    计算几何: 堆几何模版就能够了. . .. Description Problem E 2D Geometry 110 in 1! This is a collection of 110 (in bi ...

  9. leetcode -day19 Convert Sorted List to Binary Search Tree

    1.  Convert Sorted List to Binary Search Tree Given a singly linked list where elements are sorted ...

  10. (017)将一棵二叉查找树重构成链表(keep it up)

    给定一棵二叉查找树,设计算法,将每一层的全部结点构建为一个 链表(也就是说, 假设树有D层,那么你将构建出D个链表). 这个题实质是个BFS,可是实现起来有点麻烦,又不像常见的BFS, 所以编写代码时 ...