zoukankan      html  css  js  c++  java
  • 设计一个魔方(六面)的程序 【微软面试100题 第四十四题】

    题目要求:

      设计一个魔方(六面)的程序。

    题目分析:

      把魔方从正面看展开成一个平面,如图1所看到的。

    设计一个类。当中Spacexy[SPACE][LEN][LEN];中的SPACE为0~5表示六个面,每一个数字代表哪一面见图1.LEN为0~2。[LEN][LEN]表示某个面的3*3的9个格子。

      类中的方法是依据展开的平面设计的,详细的某个面的某个格子由Spacexy[SPACE][LEN][LEN];定位。

    代码实现:

    #include <iostream>
    using namespace std;
    
    class MagicCube
    {
    private:
        enum{LEN = 3,SPACE = 6};
        enum color{red,yellow,black,blue,green,purple};
        enum color Spacexy[SPACE][LEN][LEN];
    public:
        MagicCube();
        ~MagicCube(){};
        void LeftRotate(int x,int y);
        ////void RightRotate(int x,int y);
        void UpRotate(int x,int y);
        //void DownRotate(int x,int y);
        void PrintCube();
    };
    void MagicCube::UpRotate(int x,int y)
    {
        color tmp[3];
    
        for(int i = 0;i<3;i++)
            tmp[i] = Spacexy[0][i][y];
    
        for(int i = 0;i<3;i++)
            Spacexy[0][i][y] = Spacexy[5][i][y];
        for(int i = 0;i<3;i++)
            Spacexy[5][i][y] = Spacexy[2][i][2-y];
        for(int i = 0;i<3;i++)
            Spacexy[2][i][2-y] = Spacexy[4][i][y];
        for(int i = 0;i<3;i++)
            Spacexy[4][i][y] = tmp[i];
    }
    void MagicCube::PrintCube()
    {
        for(int s = 0;s<6;s++)
        {
            switch(s)
            {
            case 0:cout << " 正面:" << endl; break;
            case 1:cout << " 右面:" << endl; break;
            case 2:cout << " 后面:" << endl; break;
            case 3:cout << " 左面:" << endl; break;
            case 4:cout << " 上面:" << endl; break;
            case 5:cout << " 以下:" << endl; break;
            default:break ;
            }
            for(int i = 0;i<3;i++)
            {
                for(int j = 0;j<3;j++)
                {
                    cout << Spacexy[s][i][j] << " ";
                }
                cout << endl;
            }
            cout << endl;
        }
    
        cout << "---------------------------------------" << endl;
    }
    MagicCube::MagicCube()
    {
        for(int i = 0;i<6;i++)//每一面一个颜色
            for(int j = 0;j<3;j++)
                for(int k = 0;k<3;k++)
                {
                    Spacexy[i][j][k] = (color)i;
                }
    }
    void MagicCube::LeftRotate(int x,int y)
    {
        color tmp[3];
    
        for(int i = 0;i<3;i++)
            tmp[i] = Spacexy[0][x][i];
    
        for(int i = 0;i<3;i++)
            Spacexy[0][x][i] = Spacexy[1][x][i];
        for(int i = 0;i<3;i++)
            Spacexy[1][x][i] = Spacexy[2][x][i];
        for(int i = 0;i<3;i++)
            Spacexy[2][x][i] = Spacexy[3][x][i];
        for(int i = 0;i<3;i++)
            Spacexy[3][x][i] = tmp[i];
    
    }
    int main(void )
    {
        MagicCube a;
        a.PrintCube();
        a.UpRotate(0,0);
        a.PrintCube();
        return 0;
    }



  • 相关阅读:
    ES基础(六十六)使用 shrink与rolloverAPI有效的管理索引
    ES基础(六十五)一些运维相关的建议
    ES基础(六十四)监控 Elasticsearch 集群
    ES基础(六十三)缓存及使用Circuit Breaker限制内存使用
    ES基础(六十一)集群压力测试
    javascript学习五---OOP
    七个对我最重要的职业建议)--转载来自ruanyifeng博客
    javascript学习(五)之标准对象
    javascript学习--(四)面向对象:
    javascript学习笔记-(三)
  • 原文地址:https://www.cnblogs.com/jhcelue/p/6958061.html
Copyright © 2011-2022 走看看