链接:poj 2632

题意:在n*m的房间有num个机器,它们的坐标和方向已知,现给定一些指令及机器k运行的次数,

L代表机器方向向左旋转90°,R代表机器方向向右旋转90°,F表示前进,每次前进一米

若前进时机器i撞到机器j,输出“Robot i crashes into robot j ”

若机器走出了n*m的房间,输出“Robot i crashes into the wall ”

当出现上述情况。仅仅需输出第一次出现上述的情况

若全部指令运行完,全部机器都没碰到上述情况,输出“OK”

思路:理解题意后,简单模拟就能够了

注意:行和列要分清,题中都是先输入列,还要注意机器的方向

#include<stdio.h>
#include<string.h>
int x[4]={1,0,-1,0},y[4]={0,1,0,-1}; //北东南西
int num,m,n,vis[101][101];
struct stu
{
int r,c,dir;
}rob[105];
int rob_go(int k,char c,int time)
{
int i,ri,ci;
if(c=='L'){
time%=4;
rob[k].dir=(rob[k].dir+4-time)%4;
}
else if(c=='R'){
time%=4;
rob[k].dir=(rob[k].dir+time)%4;
}
else if(c=='F'){
ri=rob[k].r;
ci=rob[k].c;
vis[ri][ci]=0;
while(time--){
ri+=x[rob[k].dir];
ci+=y[rob[k].dir];
if(vis[ri][ci]){ //若撞到某机器,返回该机器的编号
for(i=1;i<=num;i++)
if(ri==rob[i].r&&ci==rob[i].c)
return i;
}
}
if(ri<1||ri>n||ci<1||ci>m)
return -1; //用-1标记机器走到了墙里
rob[k].r=ri;
rob[k].c=ci;
vis[ri][ci]=1;
}
return 0;
}
int main()
{
int T,i,ins,flag,k,time;
char c;
scanf("%d",&T);
while(T--){
scanf("%d%d%d%d",&m,&n,&num,&ins);
memset(vis,0,sizeof(vis)); //标记此处机器是否存在。0代表不存在
for(i=1;i<=num;i++){
scanf("%d %d %c",&rob[i].c,&rob[i].r,&c);
vis[rob[i].r][rob[i].c]=1; //1表示此处有机器
if(c=='N')
rob[i].dir=0;
else if(c=='E')
rob[i].dir=1;
else if(c=='S')
rob[i].dir=2;
else if(c=='W')
rob[i].dir=3;
}
flag=0;
i=0;
while(ins--){
scanf("%d %c %d",&k,&c,&time);
if(!flag){
flag=rob_go(k,c,time);
if(flag&&!i) //若撞到其它机器或走到墙里,其它就不必推断了
i=k; //记录第一次未安全运行完指令的机器
}
}
if(flag==0)
printf("OK\n");
else if(flag==-1)
printf("Robot %d crashes into the wall\n",i);
else
printf("Robot %d crashes into robot %d\n",i,flag);
}
return 0;
}

poj 2632 Crashing Robots(模拟)的更多相关文章

  1. poj 2632 Crashing Robots 模拟

    题目链接: http://poj.org/problem?id=2632 题目描述: 有一个B*A的厂库,分布了n个机器人,机器人编号1~n.我们知道刚开始时全部机器人的位置和朝向,我们可以按顺序操控 ...

  2. POJ 2632 Crashing Robots (模拟 坐标调整)(fflush导致RE)

    题目链接:http://poj.org/problem?id=2632 先话说昨天顺利1Y之后,直到今天下午才再出题 TAT,真是刷题计划深似海,从此AC是路人- - 本来2632是道略微恶心点的模拟 ...

  3. POJ 2632 Crashing Robots 模拟 难度:0

    http://poj.org/problem?id=2632 #include<cstdio> #include <cstring> #include <algorith ...

  4. 模拟 POJ 2632 Crashing Robots

    题目地址:http://poj.org/problem?id=2632 /* 题意:几个机器人按照指示,逐个朝某个(指定)方向的直走,如果走过的路上有机器人则输出谁撞到:如果走出界了,输出谁出界 如果 ...

  5. POJ 2632 Crashing Robots (坑爹的模拟题)

    Crashing Robots Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 6599   Accepted: 2854 D ...

  6. poj 2632 Crashing Robots

    点击打开链接 Crashing Robots Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 6655   Accepted: ...

  7. POJ 2632 Crashing Robots(较为繁琐的模拟)

    题目链接:http://poj.org/problem?id=2632 题目大意:题意简单,N个机器人在一个A*B的网格上运动,告诉你机器人的起始位置和对它的具体操作,输出结果: 1.Robot i ...

  8. poj 2632 Crashing Robots_模拟

    做的差点想吐,调来调去,编译器都犯毛病,wlgq,幸好1a. 题意:给你机器人怎走的路线,碰撞就输出 #include <cstdlib> #include <iostream> ...

  9. Poj OpenJudge 百练 2632 Crashing Robots

    1.Link: http://poj.org/problem?id=2632 http://bailian.openjudge.cn/practice/2632/ 2.Content: Crashin ...

随机推荐

  1. iOS:移动端“用户反馈和客服”的几个平台SDK的介绍

    简单阐述: 用户反馈功能几乎是每个app都有的一个功能点,通过反馈功能实现与用户的连接.沟通,随时随地收集用户意见反馈和Bug报告,即时和用户保持沟通,在一定程度上提升了app的竞争力.而给app评分 ...

  2. 迭代器模式(Iterator)

    @@@模式定义: 提供一种方法顺序访问一个聚合对象中的各个元素,而又不需暴露该对象的内部表示. @@@练习示例:  工资表数据的整合 @@@示例代码: \pattern\PayModel.java ~ ...

  3. 第三章 logstash - 输入插件之tcp与redis

    常用的输入插件: tcp redis 一.tcp 1.用法 input { tcp { port => 4560 codec => json_lines mode => server ...

  4. PHP 字符串包含判断

    遇到了这个问题.记录一下.用strpos查找字符串来进行字符串包含判断. <?php //$res = strpos("hello", "hx"); $r ...

  5. iOS开发-Reachability实时检测Wifi,2G/3G/4G/网络状态

    最近遇到一个功能就是根据用户当前的网络状,用户未联网需要提示一下,如果是Wifi可以推荐一些图片新闻,如果是3G模式设置为无图的模式,获取网络状态比较简单,毕竟中国现在的流量还是一个比较贵的状态,哪天 ...

  6. Chromium网页Layer Tree创建过程分析

    在Chromium中.WebKit会创建一个Graphics Layer Tree描写叙述网页.Graphics Layer Tree是和网页渲染相关的一个Tree. 网页渲染终于由Chromium的 ...

  7. eclipse启动错误:java.lang.NoClassDefFoundError: org/eclipse/core/resources/IContainer

    转自:http://blog.csdn.net/niu_hao/article/details/9332521 eclipse启动时报错如下:java.lang.NoClassDefFoundErro ...

  8. KVM 虚拟化技术

    1.1 前言 1.1.1 什么是虚拟化? 在计算机技术中,虚拟化(技术)或虚拟技术(英语:Virtualization)是一种资源管理技术,是将计算机的各种实体资源(CPU.内存.磁盘空间.网络适配器 ...

  9. 解剖 CPU(另)

    http://itbbs.pconline.com.cn/notebook/11026377.html 话不多说,这个处理器,就是今天我们要厮杀的对象! 1. 案板上的她,静静等等手术的进行! 2. ...

  10. 使用Genymotion模拟器或者手机运行ionic4程序

    1.使用命令行 #添加android, 如果是ios ,设置ioscordova platform add android #编译成apkionic build #开启cordova run andr ...