蓝桥杯之二阶魔方旋转(第二种方法)

2024-03-02 01:38

本文主要是介绍蓝桥杯之二阶魔方旋转(第二种方法),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

魔方可以对它的6个面自由旋转。

我们来操作一个2阶魔方(如图1所示)
为了描述方便,我们为它建立了坐标系。

各个面的初始状态如下:
x轴正向:绿
x轴反向:蓝
y轴正向:红
y轴反向:橙
z轴正向:白
z轴反向:黄

假设我们规定,只能对该魔方进行3种操作。分别标记为:
x 表示在x轴正向做顺时针旋转
y 表示在y轴正向做顺时针旋转
z 表示在z轴正向做顺时针旋转

基本旋转后的效果如图2,3,4所示。
这里写图片描述这里写图片描述

xyz 则表示顺序执行x,y,z 3个操作

题目的要求是:
从标准输入获得一个串,表示操作序列。
程序输出:距离我们最近的那个小方块的3个面的颜色。
顺序是:x面,y面,z面。

例如:在初始状态,应该输出:
绿红白

初始状态下,如果用户输入:
x
则应该输出:
绿白橙

初始状态下,如果用户输入:
zyx
则应该输出:
红白绿

所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。
注意:不要使用package语句。不要使用jdk1.6及以上版本的特性。


这里写图片描述

这里写图片描述


package 魔方;import java.util.Scanner;public class Exe2 {//定义24个面的颜色  public  String[] mian=new String[25];  public static void main(String[] args) {  // TODO Auto-generated method stub  Exe2 m=new Exe2();  m.init();  m.getString();  m.getResult();  }  //初始化24个面的颜色  public  void init(){  for (int i=1;i<5;i++){   //x zheng  mian[i]="绿";  }  for (int i=5;i<9;i++){  //y zheng  mian[i]="红";  }  for (int i=9;i<13;i++){  //z zheng  mian[i]="白";  }  for (int i=13;i<17;i++){  //x fan  mian[i]="蓝";  }  for (int i=17;i<21;i++){  //y fan  mian[i]="橙";  }  for (int i=21;i<25;i++){  //z fan  mian[i]="黄";  }  }  //定义读取函数  public  void getString(){  Scanner sc=new Scanner(System.in);  String str=sc.nextLine();  for (int i=0;i<str.length();i++){  String next=str.substring(i, i+1);  if (next=="x"){  reX();  }  if (next=="y"){  reY();  }  if (next=="z"){  reZ();  }  }  }  //输出结果(最靠近我们那个正方体的三个面)  public  void getResult(){  System.out.println(mian[2]+mian[5]+mian[9]);  }//定义绕x轴旋转的函数  public  void reX(){  String[] sa=revertZheng(mian[1],mian[2],mian[3],mian[4]);  for(int i=1;i<5;i++){  mian[i]=sa[i-1];  }  String[] sb=revertZheng(mian[10],mian[9],mian[5],mian[8],mian[22],mian[21],mian[19],mian[18]);  mian[10]=sb[0];mian[9]=sb[1];mian[5]=sb[2];mian[8]=sb[3];  mian[22]=sb[4];mian[21]=sb[5];mian[19]=sb[6];mian[18]=sb[7];  }  //定义绕y轴旋转的函数  public  void reY(){  String[] sa=revertZheng(mian[5],mian[6],mian[7],mian[8]);  mian[5]=sa[0];mian[6]=sa[1];mian[7]=sa[2];mian[8]=sa[3];  String[] sb=revertZheng(mian[9],mian[12],mian[13],mian[16],mian[23],mian[22],mian[3],mian[2]);  mian[9]=sb[0];mian[12]=sb[1];mian[13]=sb[2];mian[16]=sb[3];  mian[23]=sb[4];mian[22]=sb[5];mian[3]=sb[6];mian[2]=sb[7];  }  //定义绕z轴旋转的函数  public  void reZ(){  String[] sa=revertZheng(mian[10],mian[11],mian[12],mian[9]);  mian[10]=sa[0];mian[11]=sa[1];mian[12]=sa[2];mian[9]=sa[3];  String[] sb=revertZheng(mian[18],mian[17],mian[14],mian[13],mian[6],mian[5],mian[2],mian[1]);  mian[18]=sb[0];mian[17]=sb[1];mian[14]=sb[2];mian[13]=sb[3];  mian[6]=sb[4];mian[5]=sb[5];mian[2]=sb[6];mian[1]=sb[7];  }  //定义正对我们那四个面的旋转函数  public  String [] revertZheng(String s1,String s2,String s3,String s4){  String a="";  a=s1;  s1=s4;  s4=s3;  s3=s2;  s2=a;  String[] ss=new String[4];  ss[0]=s1;ss[1]=s2;ss[2]=s3;ss[3]=s4;  return ss;  }  //侧面8个面的旋转函数  public  String [] revertZheng(String s1,String s2,String s3,String s4,String s5,String s6,String s7,String s8){   String a="",b="";  a=s1;b=s2;  s1=s7;  s2=s8;  s7=s5;  s8=s6;  s5=s3;  s6=s4;  s3=a;  s4=b;  String[] ss=new String[8];  ss[0]=s1;ss[1]=s2;ss[2]=s3;ss[3]=s4;ss[4]=s5;ss[5]=s6;ss[6]=s7;ss[7]=s8;  return ss;  }  }

转载自:http://blog.csdn.net/wildcatlele/article/details/8764601

这篇关于蓝桥杯之二阶魔方旋转(第二种方法)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/764526

相关文章

Linux系统中查询JDK安装目录的几种常用方法

《Linux系统中查询JDK安装目录的几种常用方法》:本文主要介绍Linux系统中查询JDK安装目录的几种常用方法,方法分别是通过update-alternatives、Java命令、环境变量及目... 目录方法 1:通过update-alternatives查询(推荐)方法 2:检查所有已安装的 JDK方

SQL Server安装时候没有中文选项的解决方法

《SQLServer安装时候没有中文选项的解决方法》用户安装SQLServer时界面全英文,无中文选项,通过修改安装设置中的国家或地区为中文中国,重启安装程序后界面恢复中文,解决了问题,对SQLSe... 你是不是在安装SQL Server时候发现安装界面和别人不同,并且无论如何都没有中文选项?这个问题也

Java Thread中join方法使用举例详解

《JavaThread中join方法使用举例详解》JavaThread中join()方法主要是让调用改方法的thread完成run方法里面的东西后,在执行join()方法后面的代码,这篇文章主要介绍... 目录前言1.join()方法的定义和作用2.join()方法的三个重载版本3.join()方法的工作原

在MySQL中实现冷热数据分离的方法及使用场景底层原理解析

《在MySQL中实现冷热数据分离的方法及使用场景底层原理解析》MySQL冷热数据分离通过分表/分区策略、数据归档和索引优化,将频繁访问的热数据与冷数据分开存储,提升查询效率并降低存储成本,适用于高并发... 目录实现冷热数据分离1. 分表策略2. 使用分区表3. 数据归档与迁移在mysql中实现冷热数据分

Spring Boot从main方法到内嵌Tomcat的全过程(自动化流程)

《SpringBoot从main方法到内嵌Tomcat的全过程(自动化流程)》SpringBoot启动始于main方法,创建SpringApplication实例,初始化上下文,准备环境,刷新容器并... 目录1. 入口:main方法2. SpringApplication初始化2.1 构造阶段3. 运行阶

Olingo分析和实践之ODataImpl详细分析(重要方法详解)

《Olingo分析和实践之ODataImpl详细分析(重要方法详解)》ODataImpl.java是ApacheOlingoOData框架的核心工厂类,负责创建序列化器、反序列化器和处理器等组件,... 目录概述主要职责类结构与继承关系核心功能分析1. 序列化器管理2. 反序列化器管理3. 处理器管理重要方

Python错误AttributeError: 'NoneType' object has no attribute问题的彻底解决方法

《Python错误AttributeError:NoneTypeobjecthasnoattribute问题的彻底解决方法》在Python项目开发和调试过程中,经常会碰到这样一个异常信息... 目录问题背景与概述错误解读:AttributeError: 'NoneType' object has no at

postgresql使用UUID函数的方法

《postgresql使用UUID函数的方法》本文给大家介绍postgresql使用UUID函数的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录PostgreSQL有两种生成uuid的方法。可以先通过sql查看是否已安装扩展函数,和可以安装的扩展函数

Java中Arrays类和Collections类常用方法示例详解

《Java中Arrays类和Collections类常用方法示例详解》本文总结了Java中Arrays和Collections类的常用方法,涵盖数组填充、排序、搜索、复制、列表转换等操作,帮助开发者高... 目录Arrays.fill()相关用法Arrays.toString()Arrays.sort()A

Nginx安全防护的多种方法

《Nginx安全防护的多种方法》在生产环境中,需要隐藏Nginx的版本号,以避免泄漏Nginx的版本,使攻击者不能针对特定版本进行攻击,下面就来介绍一下Nginx安全防护的方法,感兴趣的可以了解一下... 目录核心安全配置1.编译安装 Nginx2.隐藏版本号3.限制危险请求方法4.请求限制(CC攻击防御)