蓝桥杯魔方难题

蓝桥杯实例的第一题,这题的思路其实非常简单,只需要用数组定义六个面,再定义每个面中的小模块即可,一维数组、二维数组皆可。 

给出的X、Y、Z的三种转法则分别定义三个方法即可。

困难的是如何实时读取输入的xyz,这里我想了个办法就是定义一个数组,储存输入的数组,再用循环读取数组,当读取到最后一个字符就脱出循环。

package project2;
import java.util.Scanner;
public class mofangnanti {
    // * 0为绿色,1为红色,2为白色
    // * 3为蓝色,4为橙色,5为黄色
    // * 每个元素分别为左下,右下,左上,右上
    static int[][] Cube=new int[][]{{0,0,0,0},{1,1,1,1},{2,2,2,2},{3,3,3,3},{4,4,4,4},{5,5,5,5}};
    public static void main(String[] args) {


        Scanner scanner=new Scanner(System.in);

        char[] s=new char[100];
        String a=scanner.nextLine();
        for (int i=0;i<a.length();i++){
            s[i]=a.charAt(i);
        }
        for (int i=0;s[i]=='x'||s[i]=='y'||s[i]=='z';i++){
            if(s[i]=='x'){turnX();}
            if(s[i]=='y'){turnY();}
            if(s[i]=='z'){turnZ();}
        }

        Judge(0,3);
        Judge(1,2);
        Judge(2,1);
    }

    public static void turnX(){
        int temp1=Cube[1][0];
        int temp2=Cube[1][2];
        int temp3=Cube[2][0];
        int temp4=Cube[2][1];
        int temp5=Cube[4][1];
        int temp6=Cube[4][3];
        int temp7=Cube[5][0];
        int temp8=Cube[5][1];
        Cube[5][0]=temp2;
        Cube[5][1]=temp1;
        Cube[1][0]=temp4;
        Cube[1][2]=temp3;
        Cube[2][0]=temp5;
        Cube[2][1]=temp6;
        Cube[4][1]=temp7;
        Cube[4][3]=temp8;
        int Turn1=Cube[0][0];
        int Turn2=Cube[0][1];
        int Turn3=Cube[0][2];
        int Turn4=Cube[0][3];
        Cube[0][0]=Turn2;
        Cube[0][1]=Turn4;
        Cube[0][2]=Turn1;
        Cube[0][3]=Turn3;
    }
    public static void turnY(){
        int temp1=Cube[0][1];
        int temp2=Cube[0][3];
        int temp3=Cube[5][1];
        int temp4=Cube[5][3];
        int temp5=Cube[3][1];
        int temp6=Cube[3][3];
        int temp7=Cube[2][1];
        int temp8=Cube[2][3];
        Cube[2][1]=temp1;
        Cube[2][3]=temp2;
        Cube[0][1]=temp3;
        Cube[0][3]=temp4;
        Cube[5][1]=temp5;
        Cube[5][3]=temp6;
        Cube[3][1]=temp7;
        Cube[3][3]=temp8;
        int Turn1=Cube[1][0];
        int Turn2=Cube[1][1];
        int Turn3=Cube[1][2];
        int Turn4=Cube[1][3];
        Cube[1][0]=Turn2;
        Cube[1][1]=Turn4;
        Cube[1][2]=Turn1;
        Cube[1][3]=Turn3;
    }
    public static void turnZ(){
        int temp1=Cube[0][2];
        int temp2=Cube[0][3];
        int temp3=Cube[1][2];
        int temp4=Cube[1][3];
        int temp5=Cube[3][2];
        int temp6=Cube[3][3];
        int temp7=Cube[4][2];
        int temp8=Cube[4][3];
        Cube[4][2]=temp1;
        Cube[4][3]=temp2;
        Cube[0][2]=temp3;
        Cube[0][3]=temp4;
        Cube[1][2]=temp5;
        Cube[1][3]=temp6;
        Cube[3][2]=temp7;
        Cube[3][3]=temp8;
        int Turn1=Cube[2][0];
        int Turn2=Cube[2][1];
        int Turn3=Cube[2][2];
        int Turn4=Cube[2][3];
        Cube[2][0]=Turn2;
        Cube[2][1]=Turn4;
        Cube[2][2]=Turn1;
        Cube[2][3]=Turn3;
    }
    public static void Judge(int i,int j){
        int n=Cube[i][j];
        if(n==0){
            System.out.print('绿');
        }else if (n==1){
            System.out.print('红');
        }else if (n==2){
            System.out.print('白');
        }else if (n==3){
            System.out.print('蓝');
        }else if (n==4){
            System.out.print('橙');
        }else if (n==5){
            System.out.print('黄');
        }
    }
}

PS:这个程序在idea上可以成功运行且结果正确,但是在蓝桥杯的平台同样的输入运行错误,有没有人能帮我解答一下为什么。ಥ_ಥ

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值