设计一个魔方(六面)的程序 【微软面试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; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架