菜单

大学老师想把初学码农搞秃头,兰顿蚂蚁

2019年8月9日 - 4166am金沙下载
大学老师想把初学码农搞秃头,兰顿蚂蚁

java数据结构实现机器人行走,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

代码:

import java.util.*; 

class FuShu 
{ 
 public double real; 
 public double image; 

 public FuShu() 
 { 
  real = 0; 
  image = 0; 
 } 

 public FuShu(double r, double i) 
 { 
  real = r; 
  image = i; 
 } 

 public FuShu dot(FuShu x) 
 { 
  FuShu r = new FuShu(); 
  r.real = real * x.real - image * x.image; 
  r.image = real * x.image + image * x.real; 
  return r; 
 } 

 public FuShu dot(double r, double i) 
 { 
  FuShu t = new FuShu(); 
  t.real = real * r - image * i; 
  t.image = real * i + image * r; 
  return t; 
 }  
} 

class Robot 
{ 
 private int x = 0; 
 private int y = 0; 
 private FuShu dir = new FuShu(1,0); 

 public void walk(String s) 
 { 
  int sum = 0; 
  for(int i=0; i<s.length(); i++) 
  { 
   char c = s.charAt(i); 
   if(c=='L' || c=='R') 
   { 
    x += sum * dir.real; 
    y += sum * dir.image; 
    sum = 0; 
    if(c=='L') 
     dir = dir.dot(0,1); 
    else 
     dir = dir.dot(0,-1); 

   } 
   else 
    sum = sum * 10 + (c-'0'); 

  } 

  x += sum * dir.real; 
  y += sum * dir.image;   
 } 

 public void show() 
 { 
  double d = Math.sqrt(x*x + y*y); 
  System.out.println(x+","+y + " dir: " + dir.real + "," + dir.image + ", d=" + d); 
 } 
} 

public class Walk 
{ 
 public static void main(String[] args) throws Exception 
 { 
  Robot t = new Robot(); 
  t.walk("3R4"); 
  t.show(); 
 } 
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持帮客之家。 

某少年宫引进了一批机器人小车。可以接受预先输入的指令,按指令行动。小车的基本动…

图片 1
图片 2
图片 3

图片 4

非常感谢大佬们的鼎力相助!!

【数据格式】

图片 5

    int y = sc.nextInt()-1;
    int x = sc.nextInt()-1;
    String s = sc.next();
    int k = sc.nextInt();

INPUT

* 完成日期:   2016   年 04月 01日

最后 M 行为小车移动的指令。

    for (int i = 0; i < k; i++) {
      if (arr[x][y]==1) { //如果一开始是黑
        arr[x][y] = 0;
        if(s.equals(“U”)){
          y = y+1;
          s = “R”;
          if (y>n) {
            y = n;
          }
        }
        else if(s.equals(“D”)){
          y = y-1;
          s = “L”;
          if (y<0) {
            y = 0;
          }
        }
        else if(s.equals(“L”)){
          x = x-1;
          s = “U”;
          if (x<0) {
            x = 0;
          }
        }
        else{
          x = x+1;
          s = “D”;
          if (x>m) {
            x = m;
          }
        }
      }else{
        arr[x][y]=1;
        if(s.equals(“U”)){
          y = y-1;
          s = “L”;
          if (y<0) {
            y = 0;
          }
        }
        else if(s.equals(“D”)){
          y = y+1;
          s = “R”;
          if (y>n) {
            y = n;
          }
        }
        else if(s.equals(“L”)){
          x = x+1;
          s = “D”;
          if (x>m) {
            x = m;
          }
        }
        else{
          x = x-1;
          s = “U”;
          if (x<0) {
            x = 0;
        }
      }
    }
  }
  System.out.println(x+” “+y);
  }
}

【感谢大佬请将代码发到邮箱3098555186@qq.com附带csdn用户名
,可以使用我会采纳谢谢】

* 版 本 号:      001   

【感谢大佬请将代码发到邮箱3098555186@qq.com附带csdn用户名
,可以使用我会采纳谢谢】

* 对任务及求解方法的描述部分

Output

* All rights reserved.

1≤重复次数≤100
指令符号说明:
L:小车左转90度
R:小车右转90度
F:小车前进一米。(如2F3表示编号为2的小车按照原来的方向前进3米)

  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    int m = sc.nextInt();
    int n = sc.nextInt();
    int arr[][] = new int[m][n];
    for (int i = 0; i < m; i++) {
      for (int j = 0; j < n; j++) {
        arr[i][j] = sc.nextInt();
      }
    }

下面的 N
行,每行有两个整数和一个字母,代表了小车的起始位置横纵坐标和车头朝向,N、S、W、E,四个字母代表如图所示四个不同的方向。(N
行中第 i 行表示编号为 i 的小车的起始位置和方向)。

输入数据的第一行是 m n 两个整数(3 < m, n <
100),表示正方形格子的行数和列数。
接下来是 m 行数据。
每行数据为 n 个被空格分开的数字。0 表示白格,1 表示黑格。

【感谢大佬请将代码发到邮箱3098555186@qq.com附带csdn用户名
,可以使用我会采纳谢谢】

平面上的正方形格子被填上黑色或白色。在其中一格正方形内有一只“蚂蚁”。
蚂蚁的头部朝向为:上下左右其中一方。

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图