文章目录

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

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

题目描述

两只牛逃跑到了森林里。Farmer John 开始用他的专家技术追捕这两头牛。你的任务是模拟他们的行为(牛和 John)。

追击在 10 × 10 10 \times 10 10×10 的平面网格内进行。一个格子可以是:一个障碍物,两头牛(它们总在一起),或者 Farmer John。两头牛和 Farmer John 可以在同一个格子内(当他们相遇时),但是他们都不能进入有障碍的格子。

一个格子可以是:

  • . 空地;
  • * 障碍物;
  • C 两头牛;
  • F Farmer John。

这里有一个地图的例子:

*...*.....
......*...
...*...*..
..........
...*.F....
*.....*...
...*......
..C......*
...*.*....
.*.*......

牛在地图里以固定的方式游荡。每分钟,它们可以向前移动或是转弯。如果前方无障碍(地图边沿也是障碍),它们会按照原来的方向前进一步。否则它们会用这一分钟顺时针转 90 度。 同时,它们不会离开地图。

Farmer John 深知牛的移动方法,他也这么移动。

每次(每分钟)Farmer John 和两头牛的移动是同时的。如果他们在移动的时候穿过对方,但是没有在同一格相遇,我们不认为他们相遇了。当他们在某分钟末在某格子相遇,那么追捕结束。

读入十行表示地图。每行都只包含 10 个字符,表示的含义和上面所说的相同。保证地图中只有一个 F 和一个 CFC 一开始不会处于同一个格子中。

计算 Farmer John 需要多少分钟来抓住他的牛,假设牛和 Farmer John 一开始的行动方向都是正北(即上)。 如果 John 和牛永远不会相遇,输出 0。

输入格式

输入共十行,每行 10 个字符,表示如上文描述的地图。

输出格式

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

样例 #1

样例输入 #1

*...*.....
......*...
...*...*..
..........
...*.F....
*.....*...
...*......
..C......*
...*.*....
.*.*......

样例输出 #1

49

提示

翻译来自NOCOW

USACO 2.4

题解:

  1. 由于是 10 ∗ 10 10*10 10∗10所以是100个;
  2. 再因为有4个方向,所以有100*4=400(个);
  3. 由概率论乘法法则可知最多有400*400=160000;
  4. 在由于它的障碍物原因,所以小于160000;
#include<bits/stdc++.h>
using namespace std;
char a[11][11];
int main(){int i,j,k;int cx=0,cy=0,fx=0,fy=0;for(i=0;i<10;i++){scanf("%s",a[i]);
}
for(i=0;i<10;i++){for(j=0;j<10;j++){if(a[i][j]=='C'){cx=i;cy=j;   }else   if(a[i][j]=='F'){fx=i;fy=j;} }
}
int t=0;
int side=0,side1=0;//0==bei,1==dong,2==nan,3==xi;
while(t<1000){
if(fx==cx&&fy==cy){  //遇到; cout<<t; break;
}
if(side==0){  //bei;-->farm;if((fx-1)>=0&&a[fx-1][fy]!='*'){a[fx-1][fy]='F';a[fx][fy]='.';fx--;}else{side++;}
}
else if(side==1){  //dong;if((fy+1)<10&&a[fx][fy+1]!='*'){a[fx][fy+1]='F';a[fx][fy]='.';fy++;}else{side++;}
}else if(side==2){ //nan;
if((fx+1)<10&&a[fx+1][fy]!='*'){a[fx+1][fy]='F';a[fx][fy]='.';fx++;}else{side++;}
}else if(side==3){ //xi;if((fy-1)>=0&&a[fx][fy-1]!='*'){a[fx][fy-1]='F';a[fx][fy]='.';fy--;}else{side=0;}
}if(side1==0){  //bei;-->cow;if((cx-1)>=0&&a[cx-1][cy]!='*'){a[cx-1][cy]='C';a[cx][cy]='.';cx--;}else{side1++;}
}
else if(side1==1){  //dong;if((cy+1)<10&&a[cx][cy+1]!='*'){a[cx][cy+1]='C';a[cx][cy]='.';cy++;}else{side1++;}
}else if(side1==2){ //nan;if((cx+1)<10&&a[cx+1][cy]!='*'){a[cx+1][cy]='C';a[cx][cy]='.';cx++;}else{side1++;}
}else if(side1==3){ //xi;if((cy-1)>=0&&a[cx][cy-1]!='*'){a[cx][cy-1]='C';a[cx][cy]='.';cy--;}else{side1=0;}
}
t++;
}
if(t>=1000){cout<<"0";
}
return 0;
}

注意:这里的将

a[cx][cy-1]='C';
a[cx][cy]='.';

是为了调试更加方便直观;

#include<bits/stdc++.h>
using namespace std;
char a[11][11];
int main(){int i,j,k;int cx=0,cy=0,fx=0,fy=0;for(i=0;i<10;i++){scanf("%s",a[i]);
}
for(i=0;i<10;i++){for(j=0;j<10;j++){if(a[i][j]=='C'){cx=i;cy=j;   }else   if(a[i][j]=='F'){fx=i;fy=j;} }
}
int t=0;
int side=0,side1=0;//0==bei,1==dong,2==nan,3==xi;
while(t<1000){
if(fx==cx&&fy==cy){  //遇到; cout<<t; break;
}
if(side==0){  //bei;-->farm;if((fx-1)>=0&&a[fx-1][fy]!='*'){//  a[fx-1][fy]='F';
//  a[fx][fy]='.';fx--;}else{side++;}
}
else if(side==1){  //dong;if((fy+1)<10&&a[fx][fy+1]!='*'){//      a[fx][fy+1]='F';
//      a[fx][fy]='.';fy++;}else{side++;}
}else if(side==2){ //nan;
if((fx+1)<10&&a[fx+1][fy]!='*'){//      a[fx+1][fy]='F';
//      a[fx][fy]='.';fx++;}else{side++;}
}else if(side==3){ //xi;if((fy-1)>=0&&a[fx][fy-1]!='*'){//      a[fx][fy-1]='F';
//      a[fx][fy]='.';fy--;}else{side=0;}
}if(side1==0){  //bei;-->cow;if((cx-1)>=0&&a[cx-1][cy]!='*'){//      a[cx-1][cy]='C';
//      a[cx][cy]='.';cx--;}else{side1++;}
}
else if(side1==1){  //dong;if((cy+1)<10&&a[cx][cy+1]!='*'){//      a[cx][cy+1]='C';
//      a[cx][cy]='.';cy++;}else{side1++;}
}else if(side1==2){ //nan;if((cx+1)<10&&a[cx+1][cy]!='*'){//      a[cx+1][cy]='C';
//      a[cx][cy]='.';cx++;}else{side1++;}
}else if(side1==3){ //xi;if((cy-1)>=0&&a[cx][cy-1]!='*'){//      a[cx][cy-1]='C';
//      a[cx][cy]='.';cy--;}else{side1=0;}
}
t++;
}
if(t>=1000){cout<<"0";
}
return 0;
}

[USACO2.4]两只塔姆沃斯牛 The Tamworth Two相关推荐

  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. 洛谷P1518 [USACO2.4]两只塔姆沃斯牛 The Tamworth Two 题解 (C/C++)

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

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

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

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

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

  7. (移动方向状态标志)P1518 [USACO2.4]两只塔姆沃斯牛 The Tamworth Two题解

    这道题分为两部分,一部分在于是否能两个人互相撞上,另一部分在于两个人要走多少步才能撞上. 很惭愧,虽然ac了,但是主要原因是数据卡的很松,第一部分是靠判断它的步数如果大于多少则不能撞上这样猜过去的 # ...

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

    题目链接:P1518 这道题发呆了很久,一直卡在第四个测试点. 试了很多方法,比如把scanf(%c)改为scanf(%s),再改为gets.均未成功. 然后又改判断是否可以相遇的条件,共有三种: 1 ...

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

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

最新文章

  1. MPlayer编译步骤
  2. 《Windows网络与通信程序设计(第3版)》——1.4 网络应用程序设计基础
  3. ideal连接数据库报错The server time zone value ‘�й���׼ʱ��’ is unrecognized or represents more than one time
  4. Smali文件添加try/catch语句,出现“invalid use of move-exception”异常
  5. IM开发基础知识补课(三):快速理解服务端数据库读写分离原理及实践建议
  6. apache camel_发掘Apache Camel的力量
  7. PHP能不能让一串代码现实,一段让你认清现实的Java代码.java
  8. Asp.net2.0动态加载用户控件的三种方法
  9. 如何制定自动化测试战略?10年经验让我考虑这些关键要素!
  10. android应用程序优化之布局优化
  11. PHP中的++和--
  12. wamp5 开启 ssl
  13. jQuery中的siblings()
  14. treegrid 的使用介绍
  15. 命令行退出python方法
  16. 个人简历html网页代码(使用chatgpt完成web开发课的实验)
  17. 计算机辅助药物设计试题,计算机辅助药物设计考试总结1
  18. Flexbox响应式网页布局 - W3Schools视频02
  19. gw在计算机网络里面_GW 是什么意思?
  20. 我的理想作文400字计算机,我的理想作文400字

热门文章

  1. JAVAWeb开发:Tomcat出现The origin server did not find a current representation for the target reso...的问题
  2. 沈阳市政府 第三方社会评估总体报告
  3. 华为云3年仍未超阿里云,任正非感叹:积天下英雄,为何不得天下
  4. python软件-mPython(图形化编程软件) V0.5.0 官方版
  5. 用2553单片机实现按键倒计时响铃,用TM1637显示倒计时时间
  6. html360搜索框代码,HTML 代码标签
  7. 【银河麒麟V10】【服务器】IO调度算法与性能分析
  8. python查看迭代器可迭代次数
  9. JVM - 垃圾回收相关算法
  10. labview声音信号采集和分离