某训练 - 猫和老鼠 - 模拟

猫和老鼠

【题目描述】

猫和老鼠在10*10 的方格中运动,例如:

*...*.....

......*...

...*...*..

..........

...*.C....

*.....*...

...*......

..M......*

...*.*....

.*.*......

C=猫(CAT)

M=老鼠(MOUSE)

*=障碍物

.=空地

猫和老鼠每秒中走一格,如果在某一秒末他们在同一格中,我们称他们“相遇”。

注意,“对穿”是不算相遇的。猫和老鼠的移动方式相同:平时沿直线走,下一步如果会走到

障碍物上去或者出界,就用1 秒的时间做一个右转90 度。一开始他们都面向北方。

编程计算多少秒以后他们相遇。

【输入格式】

10 行,格式如上

【输出格式】

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

【样例输入】

*...*.....
 ......*...
 ...*...*..
 ..........
 ...*.C....
 *.....*...
 ...*......
 ..M......*
 ...*.*....
 .*.*......

【样例输出】

49

AC代码:

#include <cstdio>
#include <string>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <cmath>
#include <stack>
#include <queue>
#include <set>
#define LL long long
#define INF 0x7fffffff
using namespace std;

char map[15][15];
int cx, cy, mx, my;//分别代表猫和老鼠的位置
int xx[4] = {-1, 0, 1, 0};//方向
int yy[4] = {0, 1, 0, -1};//方向
int cdir, mdir;//分别代表猫和老鼠的朝向 

int judge() {		//判断当前是否相遇
	if(cx == mx && cy == my) return 1;
	return 0;
}

int main() {
	for(int i = 1; i <= 10; i++) {
		scanf("%s", map[i] + 1);
	}
	for(int i = 1; i <= 10; i++) {
		for(int j = 1; j <= 10; j++) {
			if(map[i][j] == 'C') {
				cx = i; cy = j;
			}
			if(map[i][j] == 'M') {
				mx = i; my = j;
			}
		}
	}
	//printf("%d %d %d %d \n", cx, cy, mx, my);

	int ans = 0;
	cdir = 0; mdir = 0;
	while(1) {
		//while(1) {
			if(map[cx + xx[cdir]][cy + yy[cdir]] != '*' && cx + xx[cdir] <= 10
				&& cx + xx[cdir] >= 1 && cy + yy[cdir] <= 10 && cy + yy[cdir] >= 1) {
					cx = cx + xx[cdir]; cy = cy + yy[cdir];
					//break;
				}
			else cdir = (cdir + 1) % 4;
		//}

		//while(1) {
			if(map[mx + xx[mdir]][my + yy[mdir]] != '*' && mx + xx[mdir] <= 10
				&& mx + xx[mdir] >= 1 && my + yy[mdir] <= 10 && my + yy[mdir] >= 1) {
					mx = mx + xx[mdir]; my = my + yy[mdir];
					//break;
				}
			else mdir = (mdir + 1) % 4;
		//}
		ans ++;
		if(ans >= 100000) break; //用于判断是否可以相遇,这么大点地方100000应该够了,虽然有偶然性
		if(judge()) break;
	}
	if(ans == 100000) printf("-1\n");
	else printf("%d\n", ans);
	return 0;
}

时间: 2024-11-06 07:26:43

某训练 - 猫和老鼠 - 模拟的相关文章

FZU ICPC 2020 寒假训练 4 —— 模拟(一)

P1042 乒乓球 题目背景 国际乒联现在主席沙拉拉自从上任以来就立志于推行一系列改革,以推动乒乓球运动在全球的普及.其中11分制改革引起了很大的争议,有一部分球员因为无法适应新规则只能选择退役.华华就是其中一位,他退役之后走上了乒乓球研究工作,意图弄明白11分制和21分制对选手的不同影响.在开展他的研究之前,他首先需要对他多年比赛的统计数据进行一些分析,所以需要你的帮忙. 题目描述 华华通过以下方式进行分析,首先将比赛每个球的胜负列成一张表,然后分别计算在11分制和21分制下,双方的比赛结果(

FZU ICPC 2020 寒假训练 4 —— 模拟(二)

P1056 排座椅 题目描述 上课的时候总会有一些同学和前后左右的人交头接耳,这是令小学班主任十分头疼的一件事情.不过,班主任小雪发现了一些有趣的现象,当同学们的座次确定下来之后,只有有限的 D 对同学上课时会交头接耳.同学们在教室中坐成了 M 行 N 列,坐在第 i 行第 j 列的同学的位置是 (i,j),为了方便同学们进出,在教室中设置了 K 条横向的通道,L 条纵向的通道. 于是,聪明的小雪想到了一个办法,或许可以减少上课时学生交头接耳的问题:她打算重新摆放桌椅,改变同学们桌椅间通道的位置

模式识别之卷及网络---卷及网络 训练太慢

摘要:CIFAR-10竞赛之后,卷积网络之父Yann LeCun接受相关采访.他认为:卷积网络需要大数据和高性能计算机的支持:深层卷积网络的训练时间不是问题,运行时间才是关键.Yann LeCun还分享了他正在做的一些最新研究. Kaggle近期举办了一场 关于CIFAR-10数据集的竞赛,该数据集包含有6万个32*32的彩色图像,共分为10种类型,由 Alex Krizhevsky, Vinod Nair和 Geoffrey Hinton收集而来. 很多竞赛选手使用了卷积网络来完成这场竞赛,其

从程序设计方法到思维训练总结

本文通过几个例子来讲述程序设计方法,通过程序设计方法达到思维训练的目的. 主要的核心设计方法是伪代码法和分解法: 伪代码法:用来描述程序的思路,也可以用来注释 分解法:逐步细化,分解步骤 下面我们通过几个例子来学习伪代码法和分解法.(SD: 以下代码用python语言来编写) 示例索引: 法老的金字塔 丢手绢 示例一.法老的金字塔 题目: 编写一个程序,输入层数,在控制台打印出任意层数的金字塔,如图: 分析: 根据题目,金字塔图形由空格和星号组成,现在先设定金字塔为3层,height = 3 解

卷积网络训练太慢?Yann LeCun:已解决CIFAR-10,目标 ImageNet

卷积网络训练太慢?Yann LeCun:已解决CIFAR-10,目标 ImageNet Kaggle近期举办了一场 关于CIFAR-10数据集的竞赛,该数据集包含有6万个32*32的彩色图像,共分为10种类型,由 Alex Krizhevsky, Vinod Nair和 Geoffrey Hinton收集而来. 很多竞赛选手使用了卷积网络来完成这场竞赛,其中一些在该分类任务中靠着超乎人类能力的表现而得分.在本系列的博客中,我们将会分别采访三位选手和卷积网络之父.Facebook人工智能实验室主任

【Kinect开发笔记之(二)】Kinect for windows发展历程

新版本SDK和旧版本的SDK完全兼容,如果您之前安装过旧版本的,可以直接安装新版本的SDK,但是如果您之前的开发版本是Beta版的,则需要卸载之后再安装新版本.在Kinect for Windows SDK 1.0版本中,SDK和示例文件是打包一起安装的.而在之后的版本,为了可以分别升级,微软把这两者分开独立为Kinect for Windows SDK和Kinect for Windows Developer Toolkit这两部分,所以需要分别下载安装, Kinect for Windows

&lt; 转&gt;百度与深度学习

作者 余凯,百度技术副总监,千人计划国家特聘专家. 贾磊,百度主任架构师,语音技术负责人. 陈雨强,百度商务搜索部资深研发工程师,负责搜索广告 CTR 预估 摘要:深度学习带来了机器学习的新浪潮,推动"大数据+深度模型"时代的来临,以及人工智能和人机交互大踏步前进.如果我们能在理论.建模和工程方面突破深度学习面临的一系列难题,人工智能的梦想不再遥远. 2012 年 6 月,<纽约时报>披露了 Google Brain 项目,吸引了公众的广泛关注.这个项目是由著名的斯坦福大学

完美攻略心得之圣魔大战3(Castle Fantisia)艾伦希亚战记(艾伦西亚战记)包含重做版(即新艾伦希亚战记)

(城堡幻想曲3,纠正大家个错误哦,不是圣魔大战3,圣魔大战是城堡幻想曲2,圣魔大战不是个系列,艾伦西亚战记==艾伦希亚战记,一个游戏日文名:タイトル キャッスルファンタジア -エレンシア戦記-リニューアル,日文攻略:艾伦西亚战记(艾伦希亚战记)日文攻略) 本文经过几天的改动,应该是完美了(8个MM都追到了,当然我不会就此结束,还会继续改动),我针对重作版和我玩的情况对文章进行补充,因为版本号不同,有些地方仅仅能參考了,我玩的是重做版汉化第二版(详细看城堡幻想曲圣魔大战3(Castle Fanti

【转帖】深度学习:推进人工智能的梦想

深度学习:推进人工智能的梦想 发布日期:2014.07.14  浏览次数:58次 深度学习:采用无监督学习,获得更有用的特征(不需要人工抽取特征),以实现各种分类和预测目标,结合高性能计算,提高效率. 通篇文字给人传递的信息就是,百度比Google牛,事实真的如此吗?各位有什么看法? 2012年6月,<纽约时报>披露了Google Brain项目,吸引了公众的广泛关注.这个项目是由著名的斯坦福大学机器学习教授Andrew Ng和在大规模计算机系统方面的世界顶尖专家Jeff Dean共同主导,用