大模拟,空想很容易把面和面之间的关系搞混

所以这时候需要自己找一个正方体(实在不行长方体代替)跟着图把每个面正方向标出来

然后模拟6种操作分别会对哪些块进行操作

对于储存数据的想法是,对输入输出进行分块,以c[i][j]表示是第i个面的第j块

具体参照下文输入输出内的

for(i=;i<;i++)
for(j=;j<;j++){
scanf("%s",cd);
c[j/][j%+i*]=cd[];
}

for(i=;i<;i++)
for(j=;j<;j++)
printf("%c%c",c[j/][j%+i*],j<?' ':'\n');
#include<stdio.h>
#include<string.h>
char c[][],tmp[];
int getid(char c){
switch(c){
case 'W':return ;
case 'O':return ;
case 'R':return ;
case 'B':return ;
case 'G':return ;
case 'Y':return ;
}
}
void change(char cc){
char d1,d2,d3;
if(cc=='W'){//以O面为缓存面
d1=c[][];
d2=c[][];
d3=c[][];
c[][]=c[][];
c[][]=c[][];
c[][]=c[][];
c[][]=c[][];
c[][]=c[][];
c[][]=c[][];
c[][]=c[][];
c[][]=c[][];
c[][]=c[][];
c[][]=d1;
c[][]=d2;
c[][]=d3;
}
else if(cc=='O'){//以W面为缓存面
d1=c[][];
d2=c[][];
d3=c[][];
c[][]=c[][];
c[][]=c[][];
c[][]=c[][];
c[][]=c[][];
c[][]=c[][];
c[][]=c[][];
c[][]=c[][];
c[][]=c[][];
c[][]=c[][];
c[][]=d1;
c[][]=d2;
c[][]=d3;
}
else if(cc=='R'){//以O面为缓存面
d1=c[][];
d2=c[][];
d3=c[][];
c[][]=c[][];
c[][]=c[][];
c[][]=c[][];
c[][]=c[][];
c[][]=c[][];
c[][]=c[][];
c[][]=c[][];
c[][]=c[][];
c[][]=c[][];
c[][]=d1;
c[][]=d2;
c[][]=d3;
}
else if(cc=='B'){//以G面为缓存面
d1=c[][];
d2=c[][];
d3=c[][];
c[][]=c[][];
c[][]=c[][];
c[][]=c[][];
c[][]=c[][];
c[][]=c[][];
c[][]=c[][];
c[][]=c[][];
c[][]=c[][];
c[][]=c[][];
c[][]=d1;
c[][]=d2;
c[][]=d3;
}
else if(cc=='G'){//以B面为缓存面
d1=c[][];
d2=c[][];
d3=c[][];
c[][]=c[][];
c[][]=c[][];
c[][]=c[][];
c[][]=c[][];
c[][]=c[][];
c[][]=c[][];
c[][]=c[][];
c[][]=c[][];
c[][]=c[][];
c[][]=d1;
c[][]=d2;
c[][]=d3;
}
else if(cc=='Y'){//以G面为缓存面
d1=c[][];
d2=c[][];
d3=c[][];
c[][]=c[][];
c[][]=c[][];
c[][]=c[][];
c[][]=c[][];
c[][]=c[][];
c[][]=c[][];
c[][]=c[][];
c[][]=c[][];
c[][]=c[][];
c[][]=d1;
c[][]=d2;
c[][]=d3;
}
int id=getid(cc);
d1=c[id][];
c[id][]=c[id][];
c[id][]=c[id][];
c[id][]=c[id][];
c[id][]=d1;
d1=c[id][];
c[id][]=c[id][];
c[id][]=c[id][];
c[id][]=c[id][];
c[id][]=d1;
}
int main(){
char cd[];
int i,j,len;
for(i=;i<;i++)
for(j=;j<;j++){
scanf("%s",cd);
c[j/][j%+i*]=cd[];
}
scanf("%s",tmp);
len=strlen(tmp);
for(i=;i<len;i++)
change(tmp[i]);
for(i=;i<;i++)
for(j=;j<;j++)
printf("%c%c",c[j/][j%+i*],j<?' ':'\n'); return ;
}

最新文章

  1. SAP CRM 通过调试观察CL_CRM_BOL_ENTITY中的数据
  2. position与z-index的关系
  3. docker-compose安装使用
  4. C#之玩转反射
  5. iOS 内存管理(一)之基础知识介绍
  6. MySQL 多实例启动和关闭脚本
  7. 让DataGridView显示行号
  8. 学习C++ Primer 的个人理解(零)
  9. 浅谈c#接口的问题,适合新手来了解
  10. Jquery扩展- 倒计时
  11. 手把手教你把VIM改成一个集成开发环境
  12. Linux内核和驱动编译常见问题
  13. zigbee学习:示例程序SampleApp中按键工作流程
  14. js 模拟QQ聊天窗口图片播放效果(带滚轮缩放)
  15. [ios2]发布时去除NSLog打印
  16. 获取Iframe页面高度并赋值给Iframe以及获取iframe里的元素
  17. Struts中的匹配规则
  18. Judy Beta 第二天
  19. yolo v2使用总结
  20. Windows PowerShell 入門(1)-基本操作編

热门文章

  1. 吴裕雄--天生自然C++语言学习笔记:C++ STL 教程
  2. HTML元素 和 CSS (9.23 第十天)
  3. tx2--开机启动
  4. CSS - 自学笔记
  5. Java算法练习—— Z 字形变换
  6. 微信小程序手绘地图实现之《Canvas》
  7. VM虚拟机安装windows7操作系统
  8. 二、CI框架之MCV模型
  9. 一天一个设计模式——Builder建造者模式
  10. vnpy交易接口学习