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

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

然后模拟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 ;
}

ZJNU 1196 - 三阶魔方【模拟题】——高级的更多相关文章

  1. 【ACM】魔方十一题

    0. 前言打了两年的百度之星,都没进决赛.我最大的感受就是还是太弱,总结起来就是:人弱就要多做题,人傻就要多做题.题目还是按照分类做可能效果比较好,因此,就有了做几个系列的计划.这是系列中的第一个,解 ...

  2. NOIP模拟赛 高级打字机

    [题目描述] 早苗入手了最新的高级打字机.最新款自然有着与以往不同的功能,那就是它具备撤销功能,厉害吧. 请为这种高级打字机设计一个程序,支持如下3种操作: 1.T x:在文章末尾打下一个小写字母x. ...

  3. poj 1008:Maya Calendar(模拟题,玛雅日历转换)

    Maya Calendar Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 64795   Accepted: 19978 D ...

  4. poj 1888 Crossword Answers 模拟题

    Crossword Answers Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 869   Accepted: 405 D ...

  5. CodeForces - 427B (模拟题)

    Prison Transfer Time Limit: 1000MS   Memory Limit: 262144KB   64bit IO Format: %I64d & %I64u Sub ...

  6. sdut 2162:The Android University ACM Team Selection Contest(第二届山东省省赛原题,模拟题)

    The Android University ACM Team Selection Contest Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里 ...

  7. 全国信息学奥林匹克联赛 ( NOIP2014) 复赛 模拟题 Day1 长乐一中

    题目名称 正确答案  序列问题 长途旅行 英文名称 answer sequence travel 输入文件名 answer.in sequence.in travel.in 输出文件名 answer. ...

  8. UVALive 4222 Dance 模拟题

    Dance 题目连接: https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&pag ...

  9. cdoj 25 点球大战(penalty) 模拟题

    点球大战(penalty) Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/problem/show/2 ...

随机推荐

  1. AIDL使用绑定启动远程Service出现Service Intent must be explicit: Intent

    Intent intent = new Intent(); intent.setAction("remote.MyRemoteService.Action"); 使用AIDL调用远 ...

  2. Hive 数据类型 + Hive sql

    Hive 数据类型 + Hive sql 基本类型 整型 int tinyint (byte) smallint(short) bigint(long) 浮点型 float double 布尔 boo ...

  3. hdu 1160 上升序列 dp

    FatMouse's Speed Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  4. text字体样式(多行结尾省略,彩色渐变字体)

    text-overflow: ellipsis; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; ...

  5. js 琐碎

    1.setTimeout() .setInterval() setTimeout() 方法用于在指定的毫秒数后调用函数或计算表达式.(即n毫秒后执行一次) setTimeout(code,n) set ...

  6. 【LeetCode 】N皇后II

    [问题]n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击. 上图为 8 皇后问题的一种解法.给定一个整数 n,返回 n 皇后不同的解决方案的数量. 示例: ...

  7. s5pc100开发板uboot移植

    相关软件下载地址:http://pan.baidu.com/s/16yo8Y 适用于fsc100开发板 交叉编译器arm-cortex_a8-linux-gnueabi-gcc u-boot-2010 ...

  8. cf442 B.Andrey and Problem

    看题偷瞄到题解2333(以为是劲题呢..结果是乱贪心,奇怪) 排序之后,如果加入下一个比现在更优就更新答案(奇怪啊) t=ans*(1-a[i])+s*a[i];(ans*(1-a[i])是新的一位不 ...

  9. 大二暑假第二周总结--开始学习Hadoop基础(一)

    一.简单视频学习Hadoop的处理架构 二.简单视频学习分布式文件系统HDFS并进行简单的实践操作 简单操作教程:http://dblab.xmu.edu.cn/blog/290-2/ 注意:在建立H ...

  10. springboot整合mybatis与thymeleaf

    1.创建springboot项目 (1)选择Spring Initializr (2)填写自己的Group 与 Artifact (3)选择依赖框架 等待maven下载好依赖和插件即可 2.主配置文件 ...