洛谷 P1518 两只塔姆沃斯牛
2018-08-26 17:15:25来源:博客园 阅读 ()
P1518 两只塔姆沃斯牛 The Tamworth Two
简单的模拟题,代码量不大。
他们走的路线取决于障碍物,可以把边界也看成障碍物,遇到就转,枚举次,因为100 * 100 * 4,只有4个可能在一个格子里面走,上下左右,按照给定的方式枚举,如果相遇就输出,没有就输出不可相遇。
(1) 边界看成障碍物,都变成 * 号就好了。
(2) 然后定义两个表示方向的数组
int dx[5]={-1,0,1,0}; int dy[5]={0,1,0,-1};
分别代表上右下左(顺时针)
(3) 立两个flag:flag_F表示F现在的方向,flag_C同理。
(4) 找出F和C的初始位置。
(5) 然后开始枚举每一分钟的情况,要看清楚题目里说明了转弯需要花费时间,循环枚举。
#include <algorithm> #include <iostream> #include <cstring> #include <cstdio> using namespace std; int dx[5]={-1,0,1,0}; int dy[5]={0,1,0,-1}; char map[22][22]; int cx,cy,fx,fy,flag_C,flag_F; int main() { flag_C=flag_F=0; for(int i=0;i<=11;i++) //边界直接定义为障碍 map[0][i]='*',map[i][0]='*',map[11][i]='*',map[i][11]='*'; for(int i=1;i<=10;i++) //输入 for(int j=1;j<=10;j++) cin>>map[i][j]; for(int i=1;i<=10;i++) //查找 F和 C的位置。 { for(int j=1;j<=10;j++) { if(map[i][j]=='C')cx=i,cy=j,map[i][j]='.'; if(map[i][j]=='F')fx=i,fy=j,map[i][j]='.'; } } for(int i=1;i<=400000;i++) //循环枚举 { if(map[cx+dx[flag_C]][cy+dy[flag_C]]!='*') cx=cx+dx[flag_C],cy=cy+dy[flag_C]; else flag_C++,flag_C%=4; if(map[fx+dx[flag_F]][fy+dy[flag_F]]!='*') fx=fx+dx[flag_F],fy=fy+dy[flag_F]; else flag_F++,flag_F%=4; if(fx==cx&&fy==cy) { printf("%d",i); return 0; } // cout<<"F:"<<fx<<" "<<fy<<" and "<<"C:"<<cx<<" "<<cy<<"\n"; } printf("0") }
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 洛谷P1164->小A点菜 2020-05-18
- 洛谷P1907口算练习题 2020-03-24
- 结题报告--P5551洛谷--Chino的树学 2020-03-13
- 结题报告--洛谷P3915 2020-03-13
- 洛谷P1034 矩形覆盖 2020-03-10
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash