1. 题目描述:
  2. 某少年宫引进了一批机器人小车。可以接受预先输入的指令,按指令行动。小车的基本动作很简单,只有3种:左转(记为L),右转(记为R),向前走若干厘米(直接记数字)。
  3. 例如,我们可以对小车输入如下的指令:
  4. 15L10R5LRR10R20
  5. 则,小车先直行15厘米,左转,再走10厘米,再右转,...
  6. 不难看出,对于此指令串,小车又回到了出发地。
  7. 你的任务是:编写程序,由用户输入指令,程序输出每条指令执行后小车位置与指令执行前小车位置的直线距离。
  8. 【输入、输出格式要求】
  9. 用户先输入一个整数nn<100),表示接下来将有n条指令。
  10. 接下来输入n条指令。每条指令只由LR和数字组成(数字是0~100之间的整数)
  11. 每条指令的长度不超过256个字符。
  12. 程序则输出n行结果。
  13. 每条结果表示小车执行相应的指令前后位置的直线距离。要求四舍五入到小数后2位。
  14. 例如:用户输入:
  15. 5
  16. L100R50R10
  17. 3LLL5RR4L12
  18. LL
  19. 100R
  20. 5L5L5L5
  21. 则程序输出:
  22. 102.96
  23. 9.06
  24. 0.00
  25. 100.00
  26. 0.00
  1. 分析:字符串处理,先将输入的字符串处理,字母和数字分开,然后模拟小车的动作,起点设为(00),终点设为(x,y)。然后4个方向,上左下右四个方向分别对应y+距离,x-距离,y-距离,x+距离。最后sqrt(x*x+y*y)得到结果,最后格式化输出保存两位小数【System.out.print("%.2f",结果);】
  1.  
  1. 代码:
  1. import java.util.ArrayList;
  2. import java.util.List;
  3. import java.util.Scanner;
  4.  
  5. public class test_2 {
  6. public static int x=0;
  7. public static int y=0;
  8. //处理输入字符串,将不同命令放到List中
  9. public static List<String> dispose(String str){
  10. List<String> list = new ArrayList<String>();
  11. String st = "";
  12. for(int i=0;i<str.length();i++){
  13. if(str.charAt(i)=='L' || str.charAt(i)=='R'){
  14. list.add(""+str.charAt(i));
  15. continue;
  16. }
  17. if(str.charAt(i)<='9' && str.charAt(i)>='0'){
  18. if(i+1<str.length() && (str.charAt(i+1)<='9' && str.charAt(i+1)>='0')){
  19. st+=""+str.charAt(i);
  20. }
  21. else{
  22. st+=""+str.charAt(i);
  23. list.add(st);
  24. st="";
  25. }
  26. }
  27. }
  28. return list;
  29. }
  30. public static void change(List<String> list){
  31. //1上,2左,3下,4右,默认是向前
  32. int direction = 1;
  33. for(String st:list){
  34. if(st.equals("L")){
  35. direction=direction%4+1;
  36. }else if(st.equals("R")){
  37. if(direction-1 == 0)
  38. direction=4;
  39. else
  40. direction--;
  41. }else{
  42. move(direction,Integer.parseInt(st));
  43. }
  44. }
  45. }
  46. public static void move(int direction,int distance){
  47. switch (direction) {
  48. case 1:
  49. y+=distance;
  50. break;
  51. case 2:
  52. x-=distance;
  53. break;
  54. case 3:
  55. y-=distance;
  56. break;
  57. case 4:
  58. x+=distance;
  59. break;
  60. }
  61. }
  62. public static void main(String[] args) {
  63. // TODO Auto-generated method stub
  64. Scanner scanner = new Scanner(System.in);
  65. int n = scanner.nextInt();
  66. for(int i=0;i<n;i++){
  67. x=0;y=0;
  68. String st = scanner.next();
  69. change(dispose(st));
  70. System.out.printf("%.2f",Math.sqrt(x*x+y*y));
  71. }
  72. scanner.close();
  73. }
  74. }

第三届蓝桥杯Java高职组决赛第三题的更多相关文章

  1. 第三届蓝桥杯Java高职组决赛第一题

    题目描述: 看这个算式: ☆☆☆ + ☆☆☆ = ☆☆☆ 如果每个五角星代表 1 ~ 9 的不同的数字. 这个算式有多少种可能的正确填写方法? 173 + 286 = 459 295 + 173 = ...

  2. 2012年第三届蓝桥杯Java本科组省赛试题解析

    题目地址:https://wenku.baidu.com/view/326f7b4be518964bcf847c96.html?rec_flag=default    => 百度文档 题目及解析 ...

  3. 蓝桥杯java高职组

    标题1: 猜年龄     美国数学家维纳(N.Wiener)智力早熟,11岁就上了大学.他曾在1935~1936年应邀来中 国清华大学讲学.     一次,他参加某个重要会议,年轻的脸孔引人注目.于是 ...

  4. 第七届(16年)蓝桥杯java B组决赛真题 愤怒的小鸟 解题思路

    愤怒小鸟 X星球愤怒的小鸟喜欢撞火车! 一根平直的铁轨上两火车间相距 1000 米两火车 (不妨称A和B) 以时速 10米/秒 相对行驶. 愤怒的小鸟从A车出发,时速50米/秒,撞向B车,然后返回去撞 ...

  5. 第八届蓝桥杯java b组第六题

    标题:最大公共子串 最大公共子串长度问题就是:求两个串的所有子串中能够匹配上的最大长度是多少. 比如:"abcdkkk" 和 "baabcdadabc",可以找 ...

  6. 第六届蓝桥杯java b组第三题

    第三题 三羊献瑞 观察下面的加法算式: 其中,相同的汉字代表相同的数字,不同的汉字代表不同的数字. 请你填写“三羊献瑞”所代表的4位数字(答案唯一),不要填写任何多余内容. 答案这个题目完全可以使用暴 ...

  7. 49-2015年第6届蓝桥杯Java B组

    1.三角形面积 如图1所示.图中的所有小方格面积都是1. 那么,图中的三角形面积应该是多少呢? 请填写三角形的面积.不要填写任何多余内容或说明性文字.   image.png   计算方法: 8 * ...

  8. 46-2016 蓝桥杯 java B 组

    1.煤球数目 有一堆煤球,堆成三角棱锥形.具体: 第一层放1个, 第二层3个(排列成三角形), 第三层6个(排列成三角形), 第四层10个(排列成三角形), .... 如果一共有100层,共有多少个煤 ...

  9. 36-2018 蓝桥杯Java B组试题及答案

    1:第几天2000年的1月1日,是那一年的第1天.那么,2000年的5月4日,是那一年的第几天? 注意:需要提交的是一个整数,不要填写任何多余内容. 用excel算,答案125. 2.标题:方格计数 ...

随机推荐

  1. 13、Cocos2dx 3.0游戏开发找小三之3.0中的Director :郝萌主,一统江湖

    重开发人员的劳动成果.转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/27706967 游戏中的基本元素 在曾经文章中.我们具 ...

  2. Using Qt to build an Omi App for iOS (and Android)

    JUNE 6, 2014 / HHARTZ Working on projects where the technology is pre-determined, it's often difficu ...

  3. IOS上怎样画出1像素的线

    #define SINGLE_LINE_WIDTH (/[UIScreen mainScreen].scale) #define SINGLE_LINE_ADJUST_OFFSET ((/[UIScr ...

  4. delphi 自我删除和线程池(1000行代码,需要仔细研究)

    unit Unit4; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms ...

  5. facebook打开动画pop

    POP源代码:https://github.com/facebook/pop demo相关链接:https://github.com/jxd001/POPdemo/blob/master/README ...

  6. Android常用开源项目

    Android开源项目第一篇——个性化控件(View)篇   包括ListView.ActionBar.Menu.ViewPager.Gallery.GridView.ImageView.Progre ...

  7. Android中&lt;meta-data&gt;的使用

    在AndroidManifest.xml中.<meta-data>元素能够作为子元素,被包括在<activity>.<application> .<servi ...

  8. Hadoop大数据面试--Hadoop篇

    本篇大部分内容參考网上,当中性能部分參考:http://blog.cloudera.com/blog/2009/12/7-tips-for-improving-mapreduce-performanc ...

  9. Nginx特点

    Nginx特点:1,跨平台:Nginx 能够在大多数 Unix like OS编译执行,并且也有Windows的移植版本号.2,配置异常简单:很easy上手.配置风格跟程序开发一样,神一般的配置.3, ...

  10. Wix学习整理(3)——关于Windows Installer和MSI

    原文:Wix学习整理(3)--关于Windows Installer和MSI 关于Windows Installer Windows Installer是微软Windows操作系统自带的一个软件安装和 ...