蓝桥杯官网练习题(机器人行走)

题目描述

某少年宫引进了一批机器人小车。可以接受预先输入的指令,按指令行动。小车的基本动作很简单,只有 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

运行限制

  • 最大运行时间:1s
  • 最大运行内存: 256M
import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改

public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int n=scan.nextInt();
        while(n>0){
            n--;
            String str=scan.next();
            int fangxiang=0;
            int count=0;
            int x=0;
            int y=0;
            for(int i=0;i<str.length();i++){
                if(str.charAt(i)=='L'){
                    fangxiang=(fangxiang+3)%4;
                }
                else if(str.charAt(i)=='R'){
                    fangxiang=(fangxiang+5)%4;
                }
                else{
                    count=count*10+(str.charAt(i)-'0');
                    if(i+1==str.length()||str.charAt(i+1)>'9'||str.charAt(i+1)<'0'){
                        if(fangxiang==0){
                            y+=count;
                        }
                        else if(fangxiang==1){
                            x+=count;
                        }
                        else if(fangxiang==2){
                            y-=count;
                        }
                        else{
                            x-=count;
                        }
                        count=0;
                    }
                }
            }
            double dis=Math.sqrt(x*x+y*y);
            System.out.printf("%.2f\n",dis);
        }
        scan.close();
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值