描述

Tom和Jerry在10*10的方格中:

*...*.....

......*...

...*...*..

..........

...*.C....

*.....*...

...*......

..M......*

...*.*....

.*.*......

C=Tom(猫) M=Jerry(老鼠) *=障碍物 .=空地

他们各自每秒中走一格,如果在某一秒末他们在同一格中,我们称他们“相遇”。注意,“对穿”是不算相遇的。 他们移动方式相同:平时沿直线走,下一步如果会走到障碍物上去或者出界,就用1秒的时间做一个右转90度。一开始他们都面向北方。 编程计算多少秒以后他们相遇。

输入

10行,格式如上

输出

相遇时间T。如果无解,输出-1。

样例输入

*...*.....

......*...

...*...*..

..........

...*.C....

*.....*...

...*......

..M......* .

..*.*....

.*.*......

样例输出

49

#include <iostream>
using namespace std;
char s[12][12];
void meet(int &x,int &y,int &f)
{
if(f==1)
{
if(s[x-1][y]!='*')
x--;
else
{
f=2;
return;
}
}
if(f==2)
{
if(s[x][y+1]!='*')
y++;
else
{
f=3;
return;
}
}
if(f==3)
{
if(s[x+1][y]!='*')
x++;
else
{
f=4;
return;
}
}
if(f==4)
{
if(s[x][y-1]!='*')
y--;
else
{
f=1;
return;
}
}
}
int main()
{
//freopen("a.txt","r",stdin);
int i,j,t=0;
int a,b,c,d;
for(i=-1;i<11;i++)
for(j=-1;j<11;j++)
s[i][j]='*';
for(i=0;i<10;i++)
for(j=0;j<10;j++)
{
cin>>s[i][j];
if(s[i][j]=='C')
{
a=i;
b=j;
}
if(s[i][j]=='M')
{
c=i;
d=j;
}
}
int f1=1,f2=1;
while(a!=c||b!=d)
{
meet(a,b,f1);
meet(c,d,f2);
t++;
if(t>100000)
{
t=-1;
break;
}
}
cout<<t<<endl;
return 0;
}

  

1058-Tom and Jerry的更多相关文章

  1. Tom与Jerry谁先死?

    有如下问题:Tom的攻击力为113,血量为688,Jerry的攻击力为112,血量为691.每一个回合他们各攻击对方一次,请问谁先死? 这是一个简单的“人狗大战问题”,我们只要利用类的继承,在原有的基 ...

  2. Tom和Jerry来了,Tom和Jerry走了——北漂18年(38)

    上次讲到跟我同一时候入职的女销售走了. 回忆起来,她的问题多半是技巧足够,脑子不足够,走了之后再没联系.不久之后,在老板的要求之下.LilyG又招聘了两位男销售,英文名字非常登对一个叫Tom,一个叫J ...

  3. Tom和Jerry在下棋

    题目描述 方法: 状压DP #include <cstdio> #define bc(x) (__builtin_popcount(x)) ; ; << maxn][maxn ...

  4. UVALive 7308 Tom and Jerry 猫抓老鼠 物理题

    题目链接: 就是一个老鼠在环上一速度v开始绕环走,一只猫从圆心出发,任意时刻圆心,猫,老鼠三者在一条直线上,且速度也是v,求多久后猫抓到老鼠. #include <cstdio> #inc ...

  5. 编写高质量代码:改善Java程序的151个建议(第7章:泛型和反射___建议106~109)

    建议106:动态代理可以使代理模式更加灵活 Java的反射框架提供了动态代理(Dynamic Proxy)机制,允许在运行期对目标类生成代理,避免重复开发.我们知道一个静态代理是通过主题角色(Prox ...

  6. C++常用特性原理解析

    在我的早期印象中,C++这门语言是软件工程发展过程中,出于对面向对象语言级支持不可或缺的情况下,一群曾经信誓旦旦想要用C统治宇宙的极客们妥协出来的一个高性能怪咖. 它驳杂万分,但引人入胜,出于多(mi ...

  7. <十一>JDBC_事务的处理+隔离

    Tom给jerry汇款500元 1.如果多个操作,每个操作使用的是自己的单独的连接,则无法保证事务 2.具体步骤:   1>事务开始操作前,开始事务:取消Connection的默认提交行为 2& ...

  8. FreeMarker中文API手册(完整)

    FreeMarker概述 FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯Java编写 FreeMarker被设计用来生成HTML Web页面,特别是基于MVC模式的应用 ...

  9. 基于AngularJS的企业软件前端架构[转载]

    这篇是我参加QCon北京2014的演讲内容: 提纲: 企业应用在软件行业中占有很大的比重,而这类软件多数现在也都采用B/S的模式开发,在这个日新月异的时代,它们的前端开发技术找到了什么改进点呢? B/ ...

随机推荐

  1. Windows7 下配置添加ASP功能

    按照如下顺序添加 1.控制面板-程序-打开或关闭Windows功能 2.Internet信息服务-万维网服务-应用程序开发功能 3.勾选ASP 和ASP.net选项 确定后安装完毕即可支持.

  2. 初话C++模板【用自己的话,解释清楚这些】

    用自己的话解释清楚C++的模板编程 模板编程是为了解决什么问题而出现的? 提高代码的重用性,提高代码的利用率. 泛型编程的一种实现. 模板的精神是: 类型参数化. 模板的实现 模板分为:函数模板.类模 ...

  3. 分布式系统怎样体现了CAP

    `references:` 1. http://zh.wikipedia.org/wiki/CAP%E5%AE%9A%E7%90%86 2. http://en.wikipedia.org/wiki/ ...

  4. HTML+CSS学习笔记(2) - 认识标签(1)

    HTML+CSS学习笔记(2) - 认识标签(1) 1.语义化,让你的网页更好的被搜索引擎理解 标签的用途: 我们学习网页制作时,常常会听到一个词,语义化.那么什么叫做语义化呢,说的通俗点就是:明白每 ...

  5. C#编写以管理员身份运行的程序

    using System; using System.Collections.Generic; using System.Linq; using System.Windows.Forms; names ...

  6. 终端命令收集(关于 mac与ubuntu)

    本人曾使用ubuntu 是踩过有一些坑,以及在处理问题时学到的知识,总结一下,便于以后记忆. 1 基本命令 (1)列出文件 ls 参数 目录名 参数 -w 显示中文,-l 详细信息, -a 包括隐藏文 ...

  7. 关于JFinal拦截器的理解

    这是波总的亲自总结,记录一下: 1:拦截器可以用在两个层面,一个是"控制层",另一个是"业务层",其中"业务层"是一种狭义的说法,更加合理的 ...

  8. open_clientfd(char* hostname,int port)和open_listenfd(int port)

    #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <string.h&g ...

  9. ECMAScript 5.1 Edition DOC 学习笔记

    1.类型 string number object boolean null undefined symbol (es6) attention : (typeof null) 值为 'object', ...

  10. MySQL和Navicat使用总结

    1.给字段设置默认字符值 ALTER TABLE `v_users`MODIFY COLUMN `picture` varchar(50) CHARACTER SET utf8 COLLATE utf ...