ZJNU 1196 - 三阶魔方【模拟题】——高级
大模拟,空想很容易把面和面之间的关系搞混
所以这时候需要自己找一个正方体(实在不行长方体代替)跟着图把每个面正方向标出来
然后模拟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 - 三阶魔方【模拟题】——高级的更多相关文章
- 【ACM】魔方十一题
0. 前言打了两年的百度之星,都没进决赛.我最大的感受就是还是太弱,总结起来就是:人弱就要多做题,人傻就要多做题.题目还是按照分类做可能效果比较好,因此,就有了做几个系列的计划.这是系列中的第一个,解 ...
- NOIP模拟赛 高级打字机
[题目描述] 早苗入手了最新的高级打字机.最新款自然有着与以往不同的功能,那就是它具备撤销功能,厉害吧. 请为这种高级打字机设计一个程序,支持如下3种操作: 1.T x:在文章末尾打下一个小写字母x. ...
- poj 1008:Maya Calendar(模拟题,玛雅日历转换)
Maya Calendar Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 64795 Accepted: 19978 D ...
- poj 1888 Crossword Answers 模拟题
Crossword Answers Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 869 Accepted: 405 D ...
- CodeForces - 427B (模拟题)
Prison Transfer Time Limit: 1000MS Memory Limit: 262144KB 64bit IO Format: %I64d & %I64u Sub ...
- sdut 2162:The Android University ACM Team Selection Contest(第二届山东省省赛原题,模拟题)
The Android University ACM Team Selection Contest Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里 ...
- 全国信息学奥林匹克联赛 ( NOIP2014) 复赛 模拟题 Day1 长乐一中
题目名称 正确答案 序列问题 长途旅行 英文名称 answer sequence travel 输入文件名 answer.in sequence.in travel.in 输出文件名 answer. ...
- UVALive 4222 Dance 模拟题
Dance 题目连接: https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&pag ...
- cdoj 25 点球大战(penalty) 模拟题
点球大战(penalty) Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/problem/show/2 ...
随机推荐
- C++ opencv 数字识别
#include "cv.h" #include "highgui.h" #include "cxcore.h" #include < ...
- pytorch文档学习笔记(2)
三.CUDA semantics 二.Broadcasting semantics 广播机制 广播机制要第一项对齐,第一项对齐后(相等)才能广播,或者某个第一项为1. 但如果两个size个数相等,则 ...
- Arduino - -- 串口双向通信
需要用到Arduino UNO的串口双向通信功能,以下源码: int val; void setup() { Serial.begin(9600); // opensserial port, se ...
- 【LeetCode】最长公共子序列
[问题]给定两个字符串A和B,长度分别为m和n,要求找出它们最长的公共子串,并返回其长度.例如:A = "HelloWorld"B = "loop"则A与B的最 ...
- 二、在SAP中创建一个程序
一.我们来到SE38 二.添加一个程序的名字,需要以Y或者Z开头,点击创建就可以了 三.我们输入hello Sap,然后选择可执行程序,然后保存 四.创建对象目录时,可以选择把这个加入到包中,或者选择 ...
- 九、CI框架之将URI转为数组原型
一.输入以下代码,uri_to_assoc的参数默认从3开始 二.输出效果如下: 不忘初心,如果您认为这篇文章有价值,认同作者的付出,可以微信二维码打赏任意金额给作者(微信号:382477247)哦, ...
- Oracle学习笔记(1)
1.常用sqlplus命令 (1)查看当前登录用户:show user; (2)切换当前登录用户:conn 用户名/密码 (切换系统用户+as sysdba ); (3)断开当前登录用户:disc; ...
- CocoaPods安装/卸载/初始化等常用操作
CocoaPods的官网:https://cocoapods.org/,官方指导文档https://guides.cocoapods.org/ 1)ruby gem源更换国内源gems.ruby-ch ...
- HZNU-ACM寒假集训Day1小结 STL 并查集
常用STL 1.优先队列 priority_queue 内部是用堆(heap)实现的 priority_queue<int> pq; 默认为一个“越小的整数优先级越低的优先队列” 对于一些 ...
- Nginx系列p4:进程结构
Nginx 有两种进程结构:单进程结构,多进程结构.本篇文章我们主要说多进程结构. 问:那为什么 Nginx 采用多进程结构,而不是多线程结构呢? 答:这是因为 Nginx 最核心的目的就是要保证高可 ...