遥控小车
来源:互联网 发布:软件无偿使用合同 编辑:程序博客网 时间:2024/04/24 02:18
题目描述
爸爸给小明买了一个玩具小车,是通过手柄遥控的,小明在一个房间里面用手柄控制小车,手柄上面的按键有启动键、停止键、四个方向键和一个加速键。已知小车的正常速度为1个单位长度/秒,当第一次按下加速键后,速度变为原来的两倍,即2个单位长度/秒,当下一次按下加速键的时候,速度就恢复为初始的正常速度,再次按下的时候又会加速,依次类推。
为了简单起见,该房间可以看作一个边长为50个单位长度的正方形,且把左下角的坐标视为(0,0),即原点,默认小车的起始位置始终都在原点。
在某个时刻,小明按下启动键,此时记为0时刻,小车就默认向上方出发,小明可以在小车运行的过程中,通过按键改变小车的方向(上,下,左,右),也可以通过按加速键使小车加速或者恢复正常的速度,经过50秒后按下停止键,求此时小车的坐标。
由于这个房间的四周都是墙壁,如果某个时刻小车运行到墙壁边缘,且方向是面对墙壁的,那么小车是没有办法继续前进的,只能在原地挣扎直到小明通过按键改变它的方向。
输入
每个测试样例第一行为一个正整数n(n<=20)表示在小车运行中小明对于小车的控制操作次数,当n为0时,测试结束。
接下来有n行,每行有一个整数k(0<k<50)和一个字符c(c只能为U、D、L、R、A中的一种)。其中k代表操作小车的时刻,c代表操作的类型,U代表方向向上,D代表方向向下,L代表方向向左,R代表方向向右,A代表加速或者恢复原来的速度。
输出
每一个样例对应的输出为一行,输出停止键按下时小车的坐标。输出格式为整数m和整数n(0<=m,n<=50),代表小车的横坐标和纵坐标。
样例输入
130 R410 D20 A30 A40 L0
样例输出
20 300 0
说明:此题和机器人行走问题,大同小异
AC代码如下:
#include "stdio.h"#include "string.h"#include"math.h"int main(int argc, char* argv[]){int a[100];char b[100];int c[100];//记录小车的n+1个状态(n次操作)int x,y;//横,纵坐标 int i;int flag[100];//记录小车第i个状态的速度int u,d,l,r;//标记小车上下左右四个方位移动的距离 int n;while(scanf("%d",&n)!=EOF&&n){u=d=l=r=0;//初始化坐标c[0]=1;//初始化最初状态flag[0]=1;//;初始化最初速度for (i=0;i<n;i++){scanf("%d %c",&a[i],&b[i]);}for (i=1;i<=n;i++){if (b[i-1]=='U'){c[i]=1;flag[i]=flag[i-1];}else if (b[i-1]=='D'){c[i]=2;flag[i]=flag[i-1];}else if (b[i-1]=='L'){c[i]=3;flag[i]=flag[i-1];}else if (b[i-1]=='R'){c[i]=4;flag[i]=flag[i-1];}else if (b[i-1]=='A'){c[i]=c[i-1];//方向不变if (flag[i-1]==1)//变速{flag[i]=2;}else if (flag[i-1]==2){flag[i]=1;}}}for (i=0;i<=n;i++){if (i==0){u+=a[i]*flag[i];}else{if (c[i]==1){u+=(a[i]-a[i-1])*flag[i];//时间间隔 * 速度}else if (c[i]==2){d+=(a[i]-a[i-1])*flag[i];}else if (c[i]==3){l+=(a[i]-a[i-1])*flag[i];}else if (c[i]==4){r+=(a[i]-a[i-1])*flag[i];}}if (i==n)//计算最后一次操作到50s,小车的运动{if (c[i]==1){u+=(50-a[i])*flag[i];}else if (c[i]==2){d+=(50-a[i])*flag[i];}else if (c[i]==3){l+=(50-a[i])*flag[i];}else if (c[i]==4){r+=(50-a[i])*flag[i];}}}x=r-l;y=u-d;if(x<0) x=0;//判断坐标是否越界if(y<0) y=0;if(x>50) x=50;if(y>50) y=50;printf("%d %d\n",x,y);}return 0;}
0 0
- 遥控小车
- 红外遥控智能小车
- arduino 红外遥控小车
- 树莓派遥控小车
- DIY手机遥控小车
- 单片机智能遥控小车实战
- 安卓端APP遥控树莓派小车
- 精简版遥控先锋小车
- PS2手柄遥控Arduino小车
- Android蓝牙遥控小车软件
- WiFi遥控小车(一):基于wicam模块的小车
- 手机蓝牙遥控小车的制作
- WIFI-Robot Car无线智能远程遥控小车
- 智能小车实用 遥控 循迹 切换源码
- 低成本DIY视频预览遥控小车
- 无线遥控小车android客户端图展
- 安卓手机遥控蓝牙小车
- 遥控小车之:HTML5+ 虚拟摇杆
- centos 端口检查
- jqurey利用正则表达式判断注册页面信息
- HTTP协议详解
- Mysql(5.7)win安装
- PID控制理論(1)-基本介紹
- 遥控小车
- 将前台的String转给后台,解析为list<Object>
- distinct小可爱的小用法,帮了我大忙
- node.js中的path对象
- js模版引擎handlebars.js
- 一个字段多个记录拼接和多个字段的拼接
- 设计模式概述
- java多线程--中断线程
- ItemTouchHelper源码解析