him" title="Catch him">
对防守方来说,攻击对手的四分卫当然是最直接的限制对手进攻的方法。如果效果好,就可以在对方四分卫传球之前将其按翻在地,称之为擒杀。擒杀是最好的鼓舞防守队士气的方法,因为对方连传球的机会都没有,进攻就结束了,还必须倒退一些距离开球。凶狠的擒杀甚至能够将对方的四分卫弄伤,从而迫使对方更换这个进攻核心。
在本题中,输入给出准备擒杀四分卫的防守球员的位置、对方每个进攻锋线球员的位置以及对方四分卫的位置,你的任务是求出这名准备擒杀的防守球员至少要移动多少步,才能够擒杀对方四分卫。
假设对方进攻锋线和四分卫在这个过程中都不会移动。只有1名防守球员,防守球员只要碰到对方四分卫就算擒杀。
所有的球员都是一块连续的、不中空的2维区域。防守球员不可以从进攻锋线的身体上穿过,也不可以从界外穿过(只能走空地)。
防守队员不可以转动身体,只能平移。防守队员的身体所有部分向同一个方向(上、下、左、右)移动1格的过程叫做1步。
输入保证符合上面的条件。防守球员的身体总共不超过20格。
#include
#include
#include
#define maxn 110
using namespace std;
int visit[maxn][maxn],h,w,j,t=0,s=0;//s用来记录防守者的身体
int sx,sy;
char mapn[maxn][maxn];
int dir[maxn][maxn]={{1,0},{-1,0},{0,1},{0,-1}};
struct node
{
int x;
int y;
int
step;
};
node start;
struct nod
{
int
vx;
int
vy;
};//记录防守队员的身体相对与首点的位置
nod no[maxn];
int check(int x,int y)
{
if(mapn[x][y]=='O'||x<1||x>h||y<1||y>w)
return 1;
return
0;
}
int bfs()
{
memset(visit,0,sizeof(visit));
node
a;
queueQ;
Q.push(start);
visit[start.x][start.y]=1;
while(!Q.empty())
{
node fr;
fr=Q.front();
Q.pop();
for(int i=0;i<4;i++)
{
a=fr;
a.step++;
a.x+=dir[i][0];
a.y+=dir[i][1];
for(j=0;j
{
if(check(a.x+no[j].vx,a.y+no[j].vy))
break;
}
if(j!=s)
continue;//下一步没法盛开防守者的身体
if(visit[a.x][a.y])
continue;
for(j=0;j
if(mapn[a.x+no[j].vx][a.y+no[j].vy]=='Q')
return a.step;
visit[a.x][a.y]=1;
Q.push(a);
}
}
return
-1;
}
int main()
{
//freopen("in.txt", "r", stdin);
while(~scanf("%d%d\n",&h,&w)&&h&&w)
{
s=t=0;
for(int i=1;i<=h;i++)
{
for(int j=1;j<=w;j++)
{
scanf("%c",&mapn[i][j]);
}
scanf("\n");
}
for(int i=1;i<=h;i++)
for(int j=1;j<=w;j++)
if(mapn[i][j]=='D')
{
start.x=i;
start.y=j;
break;
}
for(int i=1;i<=h;i++)
for(j=1;j<=w;j++)
{
if(mapn[i][j]=='D')
{
no[s].vx=i-start.x;//找其他点相对第一点的位置
no[s++].vy=j-start.y;
}
}
int ans=bfs();
//printf("ans=%d\n",ans);
if(ans<0)
printf("Impossible\n");
else
printf("%d\n",ans);
}
}
9
Catch him的更多相关文章
-
SQLServer如何添加try catch
在.net中我们经常用到try catch.不过在sqlserver中我们也可以使用try catch捕捉错误,在这里把语法记录下来和大家分享一下, --构建存储过程CREATE PROCEDURE ...
-
try...catch..finally
try..catch..finally try{ 代码块1 }catch(Exception e){ 代码块2 }finally{ 代码块3 } catch是抓取代码块1中的异常 代码块2是出异常后的 ...
-
C++异常处理:try,catch,throw,finally的用法
写在前面 所谓异常处理,即让一个程序运行时遇到自己无法处理的错误时抛出一个异常,希望调用者可以发现处理问题. 异常处理的基本思想是简化程序的错误代码,为程序键壮性提供一个标准检测机制. 也许我们已经使 ...
-
POJ 3278 Catch That Cow(bfs)
传送门 Catch That Cow Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 80273 Accepted: 25 ...
-
[c#基础]关于try...catch最常见的笔试题
引言 在翻看之前总结的常见面试题中,关于try...catch异常处理的还是蛮多了,今天看到这个面试题,也就重新学习一下. try..catch语法 try-catch语句由一个try块后跟一个或多个 ...
-
高程(4):执行环境、作用域、上下文执行过程、垃圾收集、try...catch...
高程三 4.2.4.3 一.执行环境 1.全局执行环境是最外层的执行环境. 2.每个函数都有自己的执行环境,执行函数时,函数环境就会被推入一个当前环境栈中,执行完毕,栈将其环境弹出,把控制器返回给之前 ...
-
try catch里面try catch嵌套
try catch里能否内嵌try catch?答案是肯定的.但是等内层try catch出异常之后是个什么执行顺序呢?看下面代码 static void Main(string[] args) { ...
-
基础知识《十》java 异常捕捉 ( try catch finally ) 你真的掌握了吗?
本文转载自 java 异常捕捉 ( try catch finally ) 你真的掌握了吗? 前言:java 中的异常处理机制你真的理解了吗?掌握了吗?catch 体里遇到 return 是怎么处理 ...
-
java try(){}catch(){}自动资源释放
从 Java 7 build 105 版本开始,Java 7 的编译器和运行环境支持新的 try-with-resources 语句,称为 ARM 块(Automatic Resource Manag ...
-
Java throws Exception、try、catch
throws Exception是方法后面接的 意思是向上级抛出异常 try{}里面的异常会被外面的catch捕捉到 抛出异常是throw new Exception("异常"); ...
随机推荐
-
Java中的super与this解析
好了,现在开始讨论this&super这两个关键字的意义和用法. 在Java中,this通常指当前对象,super则指父类的.当你想要引用当前对象的某种东西,比如当前对象的某个方法,或当前对象 ...
-
《HTML5 从入门到精通--7.6.3 单元格垂直跨度——rowspan》
单元格除了能够在水平方向上跨列,还能够垂直方向上跨行.跨行设置须要使用rowspan參数. 语法 <td rowspan="单元格跨行数"> 语法解释 与水平跨度相相应 ...
-
Windows下配置Nginx使之支持PHP(转)
平台描述:Windows下,使用PHP套件 xampp,因为是测试玩,所以没在服务器 Linux 环境中配置. 1. 首先,将 nginx.conf 中的 PHP 配置注释去掉. 01 # pass ...
-
异步套接字编程之select模型
█ 选择(select)模型是Winsock中最常见的 I/O模型.核心便是利用 select 函数,实现对 I/O的管理!利用 select 函数来判断某Socket上是否有数据可读,或者能否向 ...
-
CentOS 中安装和卸载 Emacs
日志更新记录: [1] 增加 CentOS7.2 (内核版本:3.10.0-514.16.1.el7.x86_64)下Emacs25.2 的安装过程,它与本文的步骤完全一样. Emacs 版本:htt ...
-
如何搭建高可用redis架构?
如何搭建高可用redis架构? 温国兵 架构师小秘圈 昨天 作者:温国兵,曾任职于酷狗音乐,现为三七互娱 DBA.目前主要关注领域:数据库自动化运维.高可用架构设计.数据库安全.海量数据解决方案.以及 ...
-
Phonics 自然拼读法 s,a,t,i,p,n Teacher:Lamb
# 音节(syllables)拆分 # 拆分练习 # LIoyd 分类法——“七步决” # 元音拆词法 # s,a,t,i,p,n S A T I P N # 自然拼音拼读练习表 a mat ...
-
PostgreSQL9.6主从配置
参考文档: 备机日志传送:https://www.postgresql.org/docs/9.6/static/warm-standby.html 英文文档:https://www.postgresq ...
-
tarjan求lca 模板
#include <iostream> #include <cstdio> #include <sstream> #include <cstring> ...
-
Jpeg-Baseline和Progressive JPEG的区别
原文来自 http://www.hdj.me/use-progressive-jpeg-in-web 看着不错,于是粘贴了过来 今天才认识到原来JPEG文件有两种保存方式他们分别是Baseline J ...