北京林业大学“计蒜客”杯程序设计竞赛 网络赛 常见问题——大钉骑马走江湖
2016-04-25 10:43
417 查看
大钉骑马走江湖
时间限制(C/C++):1000MS/3000MS 运行内存限制:65536KByte总提交:34 测试通过:17
描述
江湖是什么,对于在象棋界厮杀的大钉来说,江湖就是一个矩阵,他的目标,就是在江湖之中骑着马,从他的位置出发,走到终点。
当然,大钉的马也遵从中国象棋中的“马走日”的规则,而且在矩阵中,也会有一些障碍物,马不能跳到障碍物上;如果大钉的马面前有障碍物,即被“别马腿”,那么他将不能跳向有障碍物的左前和右前这两个方向。
请问最少需要多少步,大钉才能骑着马跳到终点。
输入
有多组测试样例。
每组第一行有两个数 n 和 m,代表矩阵的行数和列数,2 <= n <= m < 100。
接下来输入 n 行的字符串,其中 's' 代表起点,'e' 代表终点,'.'代表空地,'#'代表障碍物。
输出
对应每组输入,输出骑马跳到终点的最小步数,如果跳不到终点,输出 -1。
样例输入
3 3 s.. ... ..e 3 3 s#. ... #.e
样例输出
4 -1
题目来源
BJFUACM
代码:
#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<queue>
using namespace std;
char map[110][110];
int n,m;
int dis[10][2]={-1,2,1,2,2,1,2,-1,1,-2,-1,-2,-2,-1,-2,1};
int dir[10][2]={0,1,0,1,1,0,1,0,0,-1,0,-1,-1,0,-1,0};
struct point
{
int x,y,step;
};
point s;
point e;
int bfs(point s,point e)
{queue<point>tp;
point next;
map[s.x][s.y]='*';
s.step=0;
tp.push(s);
while(!tp.empty())
{
s=tp.front();
tp.pop();//dis,dir
if(s.x==e.x&&s.y==e.y)
return s.step;
for(int i=0;i<8;i++)
{
next.x=s.x+dis[i][0];
next.y=s.y+dis[i][1];
if(map[s.x+dir[i][0]][s.y+dir[i][1]]!='#'&&next.x>=0&&next.x<n&&next.y>=0&&next.y<m&&map[next.x][next.y]!='#'&&map[next.x][next.y]!='*')
{
map[next.x][next.y]='*';
next.step=s.step+1;
tp.push(next);
}
}
}
return -1;
}
int main()
{int i,j;
while(~scanf("%d%d",&n,&m))
{ for(i=0;i<n;i++)
{ getchar();
for(j=0;j<m;j++)
{
scanf("%c",&map[i][j]);
if(map[i][j]=='s')
{
s.x=i;
s.y=j;
}
else if(map[i][j]=='e')
{
e.x=i;
e.y=j;
}
}
}
printf("%d\n",bfs(s,e));
}
}
相关文章推荐
- 北京林业大学“计蒜客”杯程序设计竞赛 网络赛--易彰彪的一张表
- Android请求网络--第三方库Android-async-http的使用(6)
- Apache Httpd负载均衡Tomcat并实现Session Sticky和Session Cluster
- TCP/IP详解--拥塞控制 & 慢启动 快恢复 拥塞避免
- Android 网络通信框架Volley简介
- XMLHttpRequest2-FormData
- 网络编程
- Jmeter调试工具---HTTP Mirror Server
- win7 网络和共享中心提示“依赖服务或组无法启动” 解决方法
- javascript Windouw 转自 http://www.cnblogs.com/kissdodog/archive/2013/01/01/2841464.html
- HTTP协议
- 网络爬虫实践(二)-动态页面
- tomcat localhost_access_log查看http请求
- 网络爬虫实践(一)-虾米精选集及歌曲
- http 301、302、304、400、405、415状态码解释
- node.js http服务
- IIS8.0 HTTP 错误 500.23 - Internal Server Error 检测到在集成的托管管道模式下不适用的 ASP.NET 设置。
- 浅谈网络流的基本算法 [转]
- TCP/IP的网络客户端和服务器端程序
- 网络七层协议(转)