蓝桥杯——机器人行走
某少年宫引进了一批机器人小车。可以接受预先输入的指令,按指令行动。小车的基本动作很简单,只有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
import java.util.ArrayList; import java.util.Scanner;public class 机器人行走 {/*** @param args*///初始朝向static int fang=1;//初始坐标static int x=0,y=0;//定义方向static int[][]ss={{0,1},{1,0},{0,-1},{-1,0}};public static void main(String[] args) {// TODO Auto-generated method stubScanner scanner=new Scanner(System.in);int n=scanner.nextInt();String[]list=new String[n];for (int i = 0; i <n; i++)list[i]=scanner.next();for (String string : list){Get(string);x=0;y=0;}}public static void Get(String str){ArrayList<String>list=new ArrayList<String>();//将字符与数字分开String temp1="";//零时存储数字String temp2="";//零时存储字符for (int i = 0; i < str.length(); i++){//如果当前获取的字符属于数字,则并入 temp1if(str.charAt(i)>='0'&&str.charAt(i)<='9'){temp1+=str.charAt(i)+"";if(i==str.length()-1)list.add(temp1);}//如果当前获取的字符不属于数字else{//判断存储数字的 temp1 是否属于空if(temp1!=""){list.add(temp1);temp1="";}temp2=str.charAt(i)+"";list.add(temp2);}}//遍历区分开来的队列for (String s : list) {//如果不是方向键 则按照当前方向前进if(!s.equals("R")&&!s.equals("L")){int t=Integer.parseInt(s);run(t);}else{//如果是方向键则进行转向 turn(s);}}//利用直角三角形的定理 算出长边的长度double sum=Math.sqrt(Math.pow(x,2)+Math.pow(y,2));System.out.printf("%.2f",sum);System.out.println();}//n 前进的距离static void run(int n){x+=ss[fang][0]*n;y+=ss[fang][1]*n;}//转弯static void turn(String st){//如果是右方(顺时针)则加一并取模4的值if(st.equals("R")){fang=(fang+1)%4;}//如果是左方(顺时针)则加3并取模4的值else{fang=(fang+3)%4;}}}
原文链接:https://blog.csdn.net/qq_39020387/article/details/79739814
转载于:https://www.cnblogs.com/welcom/p/10759039.html
蓝桥杯——机器人行走相关推荐
- 蓝桥杯——机器人行走(模拟类题目)Java语言实现
目录 1.题目内容: 2.解题思路 2.1.小车方向描述: 2.2.字符串指令分解 2.2.1.正则表达式法 2.2.2.数组分解法 原题OJ平台链接:https://www.lanqiao.cn/p ...
- java中的冰雹数,java实现第七届蓝桥杯打印数字
打印数字 打印数字 小明写了一个有趣的程序,给定一串数字. 它可以输出这串数字拼出放大的自己的样子. 比如"2016"会输出为: 00000 1 6666 2 0 0 1 1 6 ...
- 2019年第十届蓝桥杯 - 省赛 - C/C++研究生组 - G. 扫地机器人
2019年第十届蓝桥杯 - 省赛 - C/C++研究生组 - G. 扫地机器人 Ideas 首先我们根据数学常识可以知道,当每个机器人清扫的范围差不多时,最好都是 N / K,花的时间应该是最少的. ...
- 蓝桥杯官网 试题 PREV-109 历届真题 扫地机器人【第十届】【省赛】【研究生组】【C++】【Java】【Python】三种解法
为帮助大家能在6月18日的比赛中有一个更好的成绩,我会将蓝桥杯官网上的历届决赛题目的四类语言题解都发出来.希望能对大家的成绩有所帮助. 今年的最大目标就是能为[一亿技术人]创造更高的价值. 资源限制 ...
- 蓝桥杯2019试题J扫地机器人
题目描述: 小明公司的办公区有一条长长的走廊,由 N 个方格区域组成,如下图所 示. 走廊内部署了 K 台扫地机器人,其中第 i 台在第 Ai 个方格区域中. 已知扫地机器人每分钟可以移动到左右相邻的 ...
- 蓝桥杯练习系统习题-算法提高1
文章推荐 精选java等全套学习资源 精选java电子图书资源 精选大数据学习资源 java项目练习精选 蓝桥杯练习系统习题-算法提高1 题目搜索方式:Ctrl+F--> 输入题目名称-> ...
- 蓝桥杯 STEMA 考试 C++ 编程题模拟题
蓝桥杯 STEMA 考试 C++ 编程题模拟题 该套题为蓝桥杯青少年创意编程组官方发布的考试白皮书上的模拟题. 初级组 编程题第一题 编程实现: 做统计. 输入 10 个正整数,以空格分隔.依次输出其 ...
- 金蝉素数c语言,算法笔记_204:第四届蓝桥杯软件类决赛真题(Java语言C组)
前言:以下代码仅供参考,若有错误欢迎指正哦~ 1好好学习 汤姆跟爷爷来中国旅游.一天,他帮助中国的小朋友贴标语.他负责贴的标语是分别写在四块红纸上的四个大字:"好.好.学.习".但 ...
- 第十一届蓝桥杯国赛题目题解
试题 A: 美丽的 2 [问题描述] 小蓝特别喜欢 2,今年是公元 2020 年,他特别高兴.他很好奇,在公元 1 年到公元 2020 年(包含)中,有多少个年份的数位中包含数字 2? 题解 ...
最新文章
- 关于 Web Deployment Projects
- centos ftp服务器搭建_ftp软件,ftp软件安装使用教程,利用Serv-U如何搭建ftp服务器?...
- 将Chrome设置为Jupyter_notebook的默认浏览器
- 西门子和阿里云要搞啥事情?| 极客头条
- Mysql运维管理-一主多从宕机从库切换主库继续和从库同步过程16
- 一分钟详解机器人手眼标定MATLAB及C++实现
- 9个数中取最大值最小值速度问题
- 题目458-小光棍数
- Linux搭建es集群详细教程(最终版)
- 为什么FFFF FFFF是4GB
- 淘宝客软件-登录阿里妈妈
- 十分钟搭建自己的QA问答社区
- php红包现金,php实现微信支付之现金红包
- Win10系统文件夹被设为只读,取消Word文件的只读模式
- python自学之《21天学通Python》(2)
- 【vscode插件集】学前端一年,珍藏的 40个 vscode 插件
- 【递推】HDU1207汉诺塔II 【汉诺塔及汉诺塔变形 归纳】
- numpy之多维数组
- AEJoy —— 如何让你的 AE 插件 适应每通道 8,16,32 位颜色
- EasyDSS视频直播点播平台无法播放4K视频的原因排查与解决