第三届蓝桥杯Java高职组决赛第三题
题目描述:
某少年宫引进了一批机器人小车。可以接受预先输入的指令,按指令行动。小车的基本动作很简单,只有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,y)。然后4个方向,上左下右四个方向分别对应y+距离,x-距离,y-距离,x+距离。最后sqrt(x*x+y*y)得到结果,最后格式化输出保存两位小数【System.out.print("%.2f",结果);】
代码:
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner; public class test_2 {
public static int x=0;
public static int y=0;
//处理输入字符串,将不同命令放到List中
public static List<String> dispose(String str){
List<String> list = new ArrayList<String>();
String st = "";
for(int i=0;i<str.length();i++){
if(str.charAt(i)=='L' || str.charAt(i)=='R'){
list.add(""+str.charAt(i));
continue;
}
if(str.charAt(i)<='9' && str.charAt(i)>='0'){
if(i+1<str.length() && (str.charAt(i+1)<='9' && str.charAt(i+1)>='0')){
st+=""+str.charAt(i);
}
else{
st+=""+str.charAt(i);
list.add(st);
st="";
}
}
}
return list;
}
public static void change(List<String> list){
//1上,2左,3下,4右,默认是向前
int direction = 1;
for(String st:list){
if(st.equals("L")){
direction=direction%4+1;
}else if(st.equals("R")){
if(direction-1 == 0)
direction=4;
else
direction--;
}else{
move(direction,Integer.parseInt(st));
}
}
}
public static void move(int direction,int distance){
switch (direction) {
case 1:
y+=distance;
break;
case 2:
x-=distance;
break;
case 3:
y-=distance;
break;
case 4:
x+=distance;
break;
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
for(int i=0;i<n;i++){
x=0;y=0;
String st = scanner.next();
change(dispose(st));
System.out.printf("%.2f",Math.sqrt(x*x+y*y));
}
scanner.close();
}
}
第三届蓝桥杯Java高职组决赛第三题的更多相关文章
- 第三届蓝桥杯Java高职组决赛第一题
题目描述: 看这个算式: ☆☆☆ + ☆☆☆ = ☆☆☆ 如果每个五角星代表 1 ~ 9 的不同的数字. 这个算式有多少种可能的正确填写方法? 173 + 286 = 459 295 + 173 = ...
- 2012年第三届蓝桥杯Java本科组省赛试题解析
题目地址:https://wenku.baidu.com/view/326f7b4be518964bcf847c96.html?rec_flag=default => 百度文档 题目及解析 ...
- 蓝桥杯java高职组
标题1: 猜年龄 美国数学家维纳(N.Wiener)智力早熟,11岁就上了大学.他曾在1935~1936年应邀来中 国清华大学讲学. 一次,他参加某个重要会议,年轻的脸孔引人注目.于是 ...
- 第七届(16年)蓝桥杯java B组决赛真题 愤怒的小鸟 解题思路
愤怒小鸟 X星球愤怒的小鸟喜欢撞火车! 一根平直的铁轨上两火车间相距 1000 米两火车 (不妨称A和B) 以时速 10米/秒 相对行驶. 愤怒的小鸟从A车出发,时速50米/秒,撞向B车,然后返回去撞 ...
- 第八届蓝桥杯java b组第六题
标题:最大公共子串 最大公共子串长度问题就是:求两个串的所有子串中能够匹配上的最大长度是多少. 比如:"abcdkkk" 和 "baabcdadabc",可以找 ...
- 第六届蓝桥杯java b组第三题
第三题 三羊献瑞 观察下面的加法算式: 其中,相同的汉字代表相同的数字,不同的汉字代表不同的数字. 请你填写“三羊献瑞”所代表的4位数字(答案唯一),不要填写任何多余内容. 答案这个题目完全可以使用暴 ...
- 49-2015年第6届蓝桥杯Java B组
1.三角形面积 如图1所示.图中的所有小方格面积都是1. 那么,图中的三角形面积应该是多少呢? 请填写三角形的面积.不要填写任何多余内容或说明性文字. image.png 计算方法: 8 * ...
- 46-2016 蓝桥杯 java B 组
1.煤球数目 有一堆煤球,堆成三角棱锥形.具体: 第一层放1个, 第二层3个(排列成三角形), 第三层6个(排列成三角形), 第四层10个(排列成三角形), .... 如果一共有100层,共有多少个煤 ...
- 36-2018 蓝桥杯Java B组试题及答案
1:第几天2000年的1月1日,是那一年的第1天.那么,2000年的5月4日,是那一年的第几天? 注意:需要提交的是一个整数,不要填写任何多余内容. 用excel算,答案125. 2.标题:方格计数 ...
随机推荐
- DB2错误码解释对照
表 2. SQLSTATE 类代码 类 代码 含义 要获得子代码, 参阅... 00 完全成功完成 表 3 01 警告 表 4 02 无数据 表 5 07 动态 SQL 错误 表 6 ...
- TControl的消息覆盖函数大全(15个WM_函数和17个CM_函数,它的WndProc就处理鼠标与键盘消息)
注意,这些函数只有Private一种形式(也就是不允许覆盖,但仍在动态表格中)(特别注意,这里居然没有WM_PAINT函数): TControl = class(TComponent) private ...
- ThinkPHP 自动创建数据、自动验证、自动完成详细例子介绍(十九)
原文:ThinkPHP 自动创建数据.自动验证.自动完成详细例子介绍(十九) 1:自动创建数据 //$name=$_POST['name']; //$password=$_POST['password ...
- 玩转Windows服务系列——创建Windows服务
原文:玩转Windows服务系列——创建Windows服务 创建Windows服务的项目 新建项目->C++语言->ATL->ATL项目->服务(EXE) 这样就创建了一个Wi ...
- Android应用中Back键的监听及处理
MainActivity如下: package cn.testnbackpressed; import android.os.Bundle; import android.view.KeyEvent; ...
- OCP读书笔记(6) - 手动恢复操作
6.Restore and Recovery Task 非关键性文件丢失的恢复 临时文件丢失的恢复 临时表空间文件丢失的恢复: 查看数据库中的临时文件: SQL> select file#,ST ...
- 【VxWorks系列】任务间同步与通信之信号量
信号量是VxWorks提供的最常用,最快速的一种任务间通信机制.VxWorks中信号量有三种:二值信号量,互斥信号量,计数信号量.下面一一介绍这三种信号量的作用与区别. 信号量通常的作用就是是控制任务 ...
- 性能测试开源小工具——http_load介绍
淘测试 性能测试开源小工具——http_load介绍 meizhu 发表于:2009-07-02 浏览:3552次 评论:1次 所属分类: 性能测试 性能测试开源小工具——http_load介绍 ht ...
- C++封装SQLite实例<三>
前一篇博客中介绍的是怎样依据sqlite3_get_table()函数来获取一张表的内容,就是一股脑的把表中的内容所有存储起来放在一个一维数组中,这其中的规则已经介绍过了.接下来讲的是怎样依据一个SQ ...
- NGUI研究之在Unity中使用贝塞尔曲线
鼎鼎大名的贝塞尔曲线相信大家都耳熟能详.这两天由于工作的原因须要将贝塞尔曲线加在project中.那么我迅速的研究了一下成果就分享给大家了哦.贝塞尔曲线的原理是由两个点构成的随意角度的曲线,这两个点一 ...