1.构建地图 (矩阵读入)矩阵边缘围上一圈障碍物;
2.模拟F和C的运动
    先判断前方是否有障碍物
    如果没有障碍物,前进一步
    如果有障碍物,改变方向
    向北:x-1,y;
    向东:x, y+1;
    向南:x+1,y;
    向西:x, y-1;
    表示方向0北,1东,2南,3西//用数组表示方向dx[4]={-1,0,1,0},dy[4]={0,1,0,-1};
3.判断是否相遇,如果相遇,输出步数,退出循环
4.如果死循环,输出0
    多维数组储存情况,两者重复经过同一情况,说明永不可相遇
    先后两次从同一方向经过同一地点,死循环

#include<iostream>
#include<algorithm>
#include<string.h>
#define IOS std::ios::sync_with_stdio(false);cin.tie(0),cout.tie(0);
using namespace std;
typedef long long ll;
int s[25][25],dx[4]={-1,0,1,0},dy[4]={0,1,0,-1};
typedef struct node{//有三种属性,使用结构体 int x,y,f;//f表示方向,0北,1东,2南,3西;
}node;
node cow,farmer;//定义两个结构体
void tmove(){//判断前方是不是障碍 int fx=farmer.x+dx[farmer.f],fy=farmer.y+dy[farmer.f];//农夫的下一位置 int cx=cow.x+dx[cow.f],cy=cow.y+dy[cow.f];if(s[fx][fy]){//如果是1,进入if;如果是0,不进入 farmer.x=fx;farmer.y=fy;}else farmer.f=(farmer.f+1)%4;//转向 //cow的情况 if(s[cx][cy]){cow.x=cx;cow.y=cy;}else cow.f=(cow.f+1)%4;
}
bool mark[11][11][4][11][11][4];//判断是否John和cow是否都经过了此情况
int main(){IOS;//cin,cout加速器 char tmpc;//暂时代表字符进行判断 int timek=0;//移动时间 for(int i=1;i<=10;i++){//构建地图 for(int j=1;j<=10;j++){cin>>tmpc;//读入字符 if(tmpc=='*')continue;//障碍,不做变化 s[i][j]=1;//空地,能走为1 //读入cow的位置,方向 if(tmpc=='C'){cow.x=i;cow.y=j;cow.f=0;}//读入farmer的位置,方向 if(tmpc=='F'){farmer.x=i;farmer.y=j;farmer.f=0;}}}while(farmer.x!=cow.x||farmer.y!=cow.y){//模拟运动 timek++;if(mark[farmer.x][farmer.y][farmer.f][cow.x][cow.y][cow.f]==1){cout<<0;return 0;} mark[farmer.x][farmer.y][farmer.f][cow.x][cow.y][cow.f]=1;//这种情况已经发生,记录为1 tmove();}cout<<timek;return 0;
}

洛谷P1518 两只塔姆沃斯牛相关推荐

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

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

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

    https://www.luogu.org/problem/show?pid=1518 题目背景 题目描述 两只牛逃跑到了森林里.农夫John开始用他的专家技术追捕这两头牛.你的任务是模拟他们的行为( ...

  3. 洛古P1518—两只塔姆沃斯牛

    题目描述 两只牛逃跑到了森林里.Farmer John 开始用他的专家技术追捕这两头牛.你的任务是模拟他们的行为(牛和 John). 追击在 10×1010 \times 1010×10 的平面网格内 ...

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

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

  5. P1518 两只塔姆沃斯牛 The Tamworth Two(简单的搜索题)

    题目描述 两只牛逃跑到了森林里.农夫John开始用他的专家技术追捕这两头牛.你的任务是模拟他们的行为(牛和John). 追击在10x10的平面网格内进行.一个格子可以是: 一个障碍物, 两头牛(它们总 ...

  6. P1518两只塔姆沃斯牛

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

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

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

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

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

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

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

最新文章

  1. spring基于XML的AOP-编写必要的代码
  2. 用多态和组合替换多个条件
  3. 2-jQuery - AJAX load() 方法【进阶篇】
  4. matlab打开figure2,matlab figure2无法输出图形
  5. C 语言未初始化的局部变量是多少?
  6. Ubuntu18.0.4配置Hadoop1.2.1环境
  7. Java 实战篇-JDK9新特性
  8. 运筹学 matlab实现单纯形法
  9. python多条件求和_使用sumifs进行多条件求和
  10. 计算机音乐咱们结婚吧音乐谱,齐晨咱们结婚吧简谱_咱们结婚吧歌词
  11. Nmap使用技巧总结
  12. 现代 C++ 编译时 结构体字段反射
  13. 苹果要求部分员工佩戴警用级随身摄像头
  14. 简单说下HTTP代理、HTTPS代理、SOCKS代理的原理区别,charles抓包HTTPS原理
  15. 哪里能找到搞笑自媒体素材?学会技巧才能提高创作效率
  16. Platt SMO算法
  17. 5-QR code识别
  18. 300PLC加密与解密
  19. 百度前端学院--斌斌学院--demo---2
  20. 黑马旅游网站之搜索查询的相关bug

热门文章

  1. RS-485、RS-422、RS-232通讯协议
  2. python全栈开发,Day1(python介绍,变量,if,while)
  3. Week3 关于“微软必应词典客户端”的案例分析
  4. 使用在线路线逻辑分析仪ILA调试模块的小技巧
  5. Doris、Clickhouse、Tidb三者对比
  6. 适合安卓的无线耳机哪些好?安卓手机蓝牙耳机推荐
  7. DLT698.45协议框架
  8. linux内核那些事之brk机制
  9. 血氧饱和检测仪————TFT方案设计
  10. 不好意思, Maven 该换了!