问题描述 :

两只牛在森林里故意走丢了。农民John开始用他的专家技术追捕这两头牛。你的任务是模拟他们的行为(牛和John)。

追击在10x10的平面网格内进行。

一个格子可以是:

一个障碍物, 两头牛(它们总在一起), 或者 农民John.

两头牛和农民John可以在同一个格子内(当他们相遇时),但是他们都不能进入有障碍的格子。

一个格子可以是:

. 空地

* 障碍物

C 两头牛

F 农民John

这里有一个地图的例子:

*...*.....

......*...

...*...*..

..........

...*.F....

*.....*...

...*......

..C......*

...*.*....

.*.*......

牛在地图里以固定的方式游荡:

每一分钟,它们可以向前移动或是转弯。如果前方无障碍且不会离开地图,它们会按照原来的方向前进一步。否则它们会用这一分钟顺时针转90度。

农民John按照和牛同样的方法移动。

每次(每分钟)农民John和两头牛的移动是同时的。如果他们在移动的时候穿过对方,但是没有在同一格相遇,我们不认为他们相遇了。当他们在某分钟末在某格子相遇,那么追捕结束。开始时,John和牛都面向北方(因为John并不知道牛在哪,所以不会面向牛)。

输入说明 :

Lines 1-10: 每行10个字符,表示如上文描述的地图。

输出说明 :

输出一个数字,表示John需要多少时间才能抓住牛们。输出0,如果John无法抓住牛。

上AC代码

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
int turn[4][2] = { -1,0,0,1,1,0,0,-1 };//关键点 如何换方向! 用一个二维数组储存横坐标和纵坐标每次变化的值
int main()
{char ss[11][11];int arr[10][10];int a1, a2, b1, b2;int sum = 0;int x1 = 0, x2 = 0;for (int i = 0; i < 10; i++){for (int j = 0; j < 10; j++){cin >> ss[i][j];if (ss[i][j] == '*'){arr[i][j] = 1;}else if (ss[i][j] == '.'){arr[i][j] = 0;}else if (ss[i][j] == 'C'){a1 = i;b1 = j;arr[i][j] = 0;}else if (ss[i][j] == 'F'){a2 = i;b2 = j;arr[i][j] = 0;}}}while (true){if (a1 == a2 && b1 == b2){printf("%d", sum);break;}if (sum > 10000){printf("0");break;}if ((a1 + turn[x1][0] < 0) || (b1 + turn[x1][1] > 9) || (a1 + turn[x1][0] > 9) || (b1 + turn[x1][1] < 0) || (arr[a1 + turn[x1][0]][b1 + turn[x1][1]] == 1))//转移方向!{sum++;x1 = (x1 + 1) % 4;//注意取模 不能越界!!}else{a1 = a1 + turn[x1][0];b1 = b1 + turn[x1][1];sum++;}if ((a2 + turn[x2][0] < 0) || (b2 + turn[x2][1] > 9) || (a2 + turn[x2][0] > 9) || (b2 + turn[x2][1] < 0) || (arr[a2 + turn[x2][0]][b2 + turn[x2][1]] == 1))//转移方向!{//这是猎人x2 = (x2 + 1) % 4;//注意取模 不能越界!!}else{a2 = a2 + turn[x2][0];b2 = b2 + turn[x2][1];}}return 0;
}

两只塔姆沃斯牛<二维数组>相关推荐

  1. 洛谷P1518 [USACO2.4]两只塔姆沃斯牛 The Tamworth Two

    两只塔姆沃斯牛 The Tamworth Two 一.题目信息 1.题目链接 2.题目详情 输入格式 输出格式 样例 #1 样例输入 #1 样例输出 #1 提示 二.题目详解 1.逻辑 2.代码 (1 ...

  2. 【菜鸟进阶之路】P1518 [USACO2.4]两只塔姆沃斯牛 The Tamworth Two - 洛谷

    一.题目部分 选自洛谷: P1518 [USACO2.4]两只塔姆沃斯牛 The Tamworth Two 二.解题过程 思路 见"提交AC答案"部分给出的注释 提交AC答案 #i ...

  3. java:P1518 [USACO2.4]两只塔姆沃斯牛 The Tamworth Two

    洛谷题目:P1518 [USACO2.4]两只塔姆沃斯牛 The Tamworth Two 题目如下: 思路: 简单的模拟,不过像这种上下左右的移动方式倒是可以留意下,我是用%的方式来改变的. 我的代 ...

  4. [USACO2.4]两只塔姆沃斯牛 The Tamworth Two

    文章目录 [USACO2.4]两只塔姆沃斯牛 The Tamworth Two 题目描述 输入格式 输出格式 样例 #1 样例输入 #1 样例输出 #1 提示 题解: [USACO2.4]两只塔姆沃斯 ...

  5. P1518 两只塔姆沃斯牛 The Tamworth Two(模拟)

    P1518 两只塔姆沃斯牛 The Tamworth Two 219通过 418提交 题目提供者该用户不存在 标签 USACO 难度 普及+/提高 时空限制 1s / 128MB 2017/4/21 ...

  6. 洛谷 P1518 两只塔姆沃斯牛 The Tamworth Two

    P1518 两只塔姆沃斯牛 The Tamworth Two 题目背景 题目描述 两只牛逃跑到了森林里.农夫John开始用他的专家技术追捕这两头牛.你的任务是模拟他们的行为(牛和John). 追击在1 ...

  7. 洛谷P1518 [USACO2.4]两只塔姆沃斯牛 The Tamworth Two 题解 (C/C++)

    主要思路如下 1.为了便于边界值的处理,将数组开到12*12 四周边界赋值为'*' ,相当于墙 2.两个一维数组分别存储人和牛的坐标以及方向,北.东.南.西分别用0.1.2.3代表,顺时针转弯时直接将 ...

  8. P1518两只塔姆沃斯牛

    学习笔记: 用二维数组标识状态来记录地图 使用^来判定相同相异 数组名做指针时不能反复调用(原因不明待解决) AC代码: 不足:没利用状态专属值去判定死循环!!!! #include<iostr ...

  9. 洛谷P1518 [USACO2.4] 两只塔姆沃斯牛 The Tamworth Two

    个人觉得我的题解相比其他人的要简单许多(看到好多人写了一堆的if-else,不然就是6维数组) 此题解为我自己写的(已AC),如果有什么不太好的地方,可以说出来大家探讨一下. >>题目入口 ...

最新文章

  1. 深度学习在gilt应用——用图像相似性搜索引擎来商品推荐和服务属性分类
  2. python读文件路径-python获取程序执行文件路径的方法(推荐)
  3. BZOJ 3262 cdq分治 OR 树套树
  4. 人工智能听了很多遍,都应用在哪些领域了你知道吗?
  5. 文献记录(part15)--面向高维数据的聚类算法研究
  6. 博文写作——摘要摘要图标
  7. mac服务器证书失效,Mac OS X Server:软件更新证书过期
  8. eclipse里面配置热部署,tomcat配置
  9. 英魂之刃服务器维护中修改,英魂之刃gg修改教程 | 手游网游页游攻略大全
  10. 不知道图片加文字水印怎么弄?这3个方法自媒体达人必学
  11. 《追寻生命的意义》--后记
  12. 存储资源盘活系统,“盘活”物联网架构难题
  13. 小常识:保险中的“保全”是什么?
  14. 自己照片怎么做成漫画头像?照片变漫画效果方法分享
  15. 枢轴点(Pivot Point)系统
  16. 【26】删除有序数组中的重复选项
  17. 【Unity Shader入门精要】普通纹理和高级纹理
  18. 7-5 查询自动售货机中商品的价格
  19. 【矩阵论】特征值的估计(上下界和盖尔圆)
  20. putty使用ppk远程_如何使用PuTTY远程打开GUI应用程序

热门文章

  1. ElasticSearch 集群搭建
  2. 分享前端动画制作的 12 个原则(含代码)
  3. 用python和pandas拆分多页xls表格
  4. 绝地求生服务器维护啥意思,2019绝地求生7月10日正式服维护内容详解介绍
  5. 普鲁斯特28问——2021年12月7日
  6. 程序员:上班第一天就让改bug!网友:攒一堆了,就等你了!
  7. 《Python编程:从入门到实践》_3章:列表简介
  8. webpack中配置vue
  9. 三菱PLC控制三轴(3个伺服)机械搬运手程序
  10. 几种简单卷积计算方法实例-Faltung