资源限制

时间限制:1.0s 内存限制:256.0MB

问题描述

  某少年宫引进了一批机器人小车。可以接受预先输入的指令,按指令行动。小车的基本动作很简单,只有3种:左转(记为L),右转(记为R),向前走若干厘米(直接记数字)。

  例如,我们可以对小车输入如下的指令:

  15L10R5LRR10R20

  则,小车先直行15厘米,左转,再走10厘米,再右转,...

  不难看出,对于此指令串,小车又回到了出发地。

  你的任务是:编写程序,由用户输入指令,程序输出每条指令执行后小车位置与指令执行前小车位置的直线距离。

输入、输出格式要求

  用户先输入一个整数n(n<100),表示接下来将有n条指令。

  接下来输入n条指令。每条指令只由L、R和数字组成(数字是0~100之间的整数)

  每条指令的长度不超过256个字符。

  程序则输出n行结果。

  每条结果表示小车执行相应的指令前后位置的直线距离。要求四舍五入到小数后2位。

  例如:用户输入:
  5
  L100R50R10
  3LLL5RR4L12
  LL
  100R
  5L5L5L5

  则程序输出:
  102.96
  9.06
  0.00
  100.00
  0.00

思路解析:

设置机器人的起始坐标(0,0)即x=0,y=0;

我们先假设机器人的方向向左

然后呢

向左转:d=(d+1)%4;

向右转:d=(d+3)%4;

至于为什么向右转是d=(d+3)%4,因为本来是要d=(d-1)%4,考虑到d为负数,所以d=(d-1+4)%4,

然后简化成d=(d+3)%4;

关键一步就是走多少步给x还是y;

x+=dire[d][0]*num;
y+=dire[d][1]*num;

代码实现:

#include <stdio.h>
#include <math.h>
int dire[4][2]={{1,0},{0,1},{-1,0},{0,-1}};
char a[300];
int main()
{//方向标识符 int d=0;//起始坐标 int x=0,y=0;//保留坐标的 int x1,y1;int n;scanf("%d",&n);int i,num,k,j;double distance=0;while(n--){//保留原始坐标 x1=x;y1=y;getchar();scanf("%s",a);for(i=0;a[i];){num=0;if(a[i]!='l'&&a[i]!='r') {//求出num且没到字符串最后 while(a[i]!='l'&&a[i]!='r'&&a[i]){num=num*10+a[i]-'0';i++;}//用num乘以方向,更新x,y; x+=dire[d][0]*num;y+=dire[d][1]*num;}//搞方向,直到a[i]不是方向为止 while(a[i]=='l'||a[i]=='r'){d=a[i]=='l'?(d+1)%4:(d+3)%4;i++;}}//用勾股定理求距离 k=pow(abs(x-x1),2);j=pow(abs(y-y1),2);distance=sqrt(k+j);//输出 printf("%0.2f\n",distance);}return 0;
}

希望大家多多指教

试题 历届真题 机器人行走(C语言实现)相关推荐

  1. 试题 历届真题 魔方旋转问题【历届真题】【决赛】【高职组】

    这道题评测有点问题(评测点的输出全正确,结果正确率0%) 试题 历届真题 魔方旋转问题[历届真题][决赛][高职组] 资源限制 内存限制:256.0MB C/C++时间限制:1.0s Java时间限制 ...

  2. 【题解】【蓝桥杯】试题 历届真题 砝码称重【第十二届】【省赛】【B组】

    题目链接 试题 历届真题 砝码称重[第十二届][省赛][B组] 题目描述 解题思路 暴力,两个map,分别存储当前能称出的重量和遍历时用于计算的重量 需要注意的三点是 abs函数是在math.h里面的 ...

  3. 试题 历届真题 皮亚诺曲线距离【第十一届】【决赛】【C组】

    试题 历届真题 皮亚诺曲线距离[第十一届][决赛][C组] 提交此题   评测记录 资源限制 内存限制:256.0MB   C/C++时间限制:1.0s   Java时间限制:3.0s   Pytho ...

  4. 蓝桥杯:试题 历届真题 修改数组【第十届】【省赛】【研究生组】Java实现

    代码实现 方法一: package com.jl;import java.util.Scanner;/*** 历届真题 修改数组[第十届][省赛][研究生组]* @author jinlei**/ p ...

  5. 【蓝桥杯】试题 历届真题 穿越雷区【第六届】【决赛】【A组】

    一道比较简单的dfs搜索题.本题的两个要点:一是A开始B结束,二是走的过程中+-交替. 具体的解题过程写在注释中了. 个人经验是把字符矩阵转换成数字矩阵在判断条件时会简单一些. #include< ...

  6. 试题 历届真题 大胖子走迷宫【第十届】【决赛】【C组】

    题目描述 小明是个大胖子,或者说是个大大胖子,如果说正常人占用 1 \times 11×1 的面积,小明要占用 5\times 55×5 的面积. 由于小明太胖了,所以他行动起来很不方便.当玩一些游戏 ...

  7. 试题 历届真题 时间显示【第十二届】【省赛】【B组】

    注意事项有 类型 占用存储空间 表数范围 byte 1字节 -2^7 ~   2^7-1(-128~127) short 2字节 -2^15 ~   2^15-1(-32768~32767) int ...

  8. 试题 历届真题 全球变暖【第九届】【省赛】【B组】2018年 第9届 蓝桥杯 Java

    欢迎提问 package zhenti;import java.util.Scanner;public class biannuang {public static void main(String[ ...

  9. 试题 历届真题 带分数【第四届】【省赛】【A组】

    一.题目 二.代码 调用itertools库,进行n = a + b / c中a.c的全排列,再利用b=nc - ac,求出b,然后判断b是否满足不重,且和a.c的并集是1~9,permutation ...

最新文章

  1. stp和vrrp的配置命令
  2. 使用Nginx为Leanote配置Https
  3. 调用startActivityForResult后直接调用onActivityResult
  4. 扇区、磁盘块、页、页框、缓冲区之间的关系!
  5. linux 内核抓包功能实现基础(二) netfilter处理
  6. linux RTC 驱动模型分析
  7. 大数据分析平台具备怎样的功能
  8. jq 克隆 移除table
  9. 决定成功十种积极心态,成功有道理
  10. Edge安装插件错误(download interrupted)解决办法
  11. android悬浮窗(支持退回桌面后显示)
  12. 一男老师每日百词转载+连载(1)
  13. Spring Security技术栈学习笔记(十三)Spring Social集成第三方登录验证开发流程介绍
  14. Word如何操作压缩图片?干货经验!怎么在Word中压缩图片?
  15. 股票涨停放量是什么意思?股票涨停尾盘打开是什么意思?
  16. mysql学习笔记(13)之mycat切分规则与es基础
  17. 只用3行代码,让Python提速4倍!最强辅助
  18. Flutter 倒计时实现
  19. 《Adobe Photoshop CS5中文版经典教程(全彩版)》—第2课2.12节保存用于四色印刷的图像...
  20. 苹果手机像素只有1200万,为何拍照比安卓4800万舒服?

热门文章

  1. 软件测试 三角形问题
  2. 【计算机网络】(一)走进网络
  3. thinkphp phpmailer发送邮件
  4. PCIEBXMCx4板卡
  5. Docker以及DockerHub的使用
  6. 3. 自建DNS(bind9)
  7. js 翻转表格(行列互换)
  8. 赚钱宝3代玩客云网心云 安装armbian docker 宝塔 青龙 openwrt
  9. mkconfig与Kconfig
  10. Excel表格中如何快速在空白处添加短横杠(-)