2017华为机试题--投骰子问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2017华为机试题--投骰子问题相关的知识,希望对你有一定的参考价值。
题目描述:骰子是一个立方体,每个面一个数字,初始为左1,右2,前3(观察者方向),后4,上5,下6,用123456表示这个状态,放置到平面上,可以向左翻转(用L表示向左翻转1次),可以向右翻转(用R表示向右翻转1次),可以向前翻转(用F表示向前翻转1次),可以向后翻转(用B表示向右翻转1次),可以逆时针旋转(用A表示逆时针旋转90度),可以顺时针旋转(用C表示逆时针旋转90度),现从初始状态开始,根据输入的动作序列,计算得到最终的状态。
输入描述:
初始状态为:123456
输入只包含LRFBAC的字母序列,最大长度为50,可重复
输出描述:输出最终状态
输入例子:RA
输出例子:436512
代码如下:
1 import java.util.*; 2 3 public class Main { 4 5 public static int l = 1, r = 2, f = 3, b = 4, u = 5, d = 6; 6 7 public static void handle(char cmd) { 8 if (cmd == ‘C‘) { //R 9 int cpl = l; 10 l = f; 11 f = r; 12 r = b; 13 b = cpl; 14 } else if (cmd == ‘A‘) { //L 15 int cpr = r; 16 r = f; 17 f = l; 18 l = b; 19 b = cpr; 20 } else if (cmd == ‘F‘) { 21 int cpf = f; 22 f = u; 23 u = b; 24 b = d; 25 d = cpf; 26 } else if (cmd == ‘B‘) { 27 int cpb = b; 28 b = u; 29 u = f; 30 f = d; 31 d = cpb; 32 } else if (cmd == ‘R‘) { //A 33 int cpu = u; 34 u = l; 35 l = d; 36 d = r; 37 r = cpu; 38 } else if (cmd == ‘L‘) { //C 39 int cpu = u; 40 u = r; 41 r = d; 42 d = l; 43 l = cpu; 44 } 45 } 46 47 public static void main(String[] args) { 48 Scanner scan = new Scanner(System.in); 49 String strs = scan.nextLine(); 50 scan.close(); 51 for (int i = 0; i < strs.length(); i++) 52 handle(strs.charAt(i)); 53 System.out.println("" + l + r + f + b + u + d); 54 } 55 }
以上是关于2017华为机试题--投骰子问题的主要内容,如果未能解决你的问题,请参考以下文章
华为OD机试 - 数列还原(Python) | 机试题算法思路 2023
华为OD机试 - 端口合并(Python) | 机试题算法思路 2023
华为OD机试 - 快递货车(Python) | 机试题算法思路 2023