luogu2007 魔方
来源:互联网 发布:171网络虚拟电话号码 编辑:程序博客网 时间:2024/06/10 05:30
【传送门】
https://www.luogu.org/problem/show?pid=2007
【纪念碑】
2016年10月5日晚上,誓不A此题绝不睡觉
2016年10月6日凌晨0:20,AC此题
【题解】
模拟就好啦。。
这个题之所以调了这么长时间,在于一个很烦人的问题
如果你要将魔方的一面顺时针旋转
一开始我是这样做的:
(1,1)->t1 (1,2)->t2 (1,3)->t3
(3,1)->(1,1) (2,1)->(1,2) (1,1)->(1,3) //到这里是没有问题的
(3,3)->(3,1) (3,2)->(2,1) (3,1)->(1,1) //这里就挂了
因为你先(3,3)->(3,1)再(3,1)->(1,1),所以就相当于(3,3)->(1,1),这样就错了
其实你是想把原来的(3,1)->(1,1),所以就要换一下顺序,本来第一行是从左到右,现在第一行应该从右到左,第一列从上到下,第三行从左到右,第三列从上到下
【代码】
#include <cstdio>#include <algorithm>#include <cstring>using namespace std;char order[150];int mat[10][10][10], t1, t2, t3;void show(int k){int i, j;for(i=1;i<=3;i++){for(j=1;j<=3;j++)printf("%d",mat[k][i][j]);printf("\n");}}void fu(int &a1, int &a2, int &a3, int &b1, int &b2, int &b3){a1=b1;a2=b2;a3=b3;}void solve(int o){if(o==1){fu(t1,t2,t3,mat[1][3][3],mat[1][2][3],mat[1][1][3]);fu(mat[1][3][3],mat[1][2][3],mat[1][1][3],mat[6][3][3],mat[6][2][3],mat[6][1][3]);fu(mat[6][3][3],mat[6][2][3],mat[6][1][3],mat[2][3][3],mat[2][2][3],mat[2][1][3]);fu(mat[2][3][3],mat[2][2][3],mat[2][1][3],mat[5][3][3],mat[5][2][3],mat[5][1][3]);fu(mat[5][3][3],mat[5][2][3],mat[5][1][3],t1,t2,t3);fu(t1,t2,t3,mat[4][1][3],mat[4][1][2],mat[4][1][1]);//顺时针fu(mat[4][1][3],mat[4][1][2],mat[4][1][1],mat[4][1][1],mat[4][2][1],mat[4][3][1]);fu(mat[4][1][1],mat[4][2][1],mat[4][3][1],mat[4][3][1],mat[4][3][2],mat[4][3][3]);fu(mat[4][3][1],mat[4][3][2],mat[4][3][3],mat[4][3][3],mat[4][2][3],mat[4][1][3]);fu(mat[4][3][3],mat[4][2][3],mat[4][1][3],t1,t2,t3);}if(o==2){fu(t1,t2,t3,mat[1][3][3],mat[1][2][3],mat[1][1][3]);fu(mat[1][3][3],mat[1][2][3],mat[1][1][3],mat[5][3][3],mat[5][2][3],mat[5][1][3]);fu(mat[5][3][3],mat[5][2][3],mat[5][1][3],mat[2][3][3],mat[2][2][3],mat[2][1][3]);fu(mat[2][3][3],mat[2][2][3],mat[2][1][3],mat[6][3][3],mat[6][2][3],mat[6][1][3]);fu(mat[6][3][3],mat[6][2][3],mat[6][1][3],t1,t2,t3);fu(t1,t2,t3,mat[4][1][1],mat[4][1][2],mat[4][1][3]);fu(mat[4][1][1],mat[4][1][2],mat[4][1][3],mat[4][1][3],mat[4][2][3],mat[4][3][3]);fu(mat[4][1][3],mat[4][2][3],mat[4][3][3],mat[4][3][3],mat[4][3][2],mat[4][3][1]);fu(mat[4][3][3],mat[4][3][2],mat[4][3][1],mat[4][3][1],mat[4][2][1],mat[4][1][1]);fu(mat[4][3][1],mat[4][2][1],mat[4][1][1],t1,t2,t3);}if(o==3){fu(t1,t2,t3,mat[1][1][1],mat[1][1][2],mat[1][1][3]);fu(mat[1][1][1],mat[1][1][2],mat[1][1][3],mat[3][1][1],mat[3][1][2],mat[3][1][3]);fu(mat[3][1][1],mat[3][1][2],mat[3][1][3],mat[2][1][1],mat[2][1][2],mat[2][1][3]);fu(mat[2][1][1],mat[2][1][2],mat[2][1][3],mat[4][1][1],mat[4][1][2],mat[4][1][3]);fu(mat[4][1][1],mat[4][1][2],mat[4][1][3],t1,t2,t3);fu(t1,t2,t3,mat[5][1][3],mat[5][1][2],mat[5][1][1]);fu(mat[5][1][3],mat[5][1][2],mat[5][1][1],mat[5][1][1],mat[5][2][1],mat[5][3][1]);fu(mat[5][1][1],mat[5][2][1],mat[5][3][1],mat[5][3][1],mat[5][3][2],mat[5][3][3]);fu(mat[5][3][1],mat[5][3][2],mat[5][3][3],mat[5][3][3],mat[5][2][3],mat[5][1][3]);fu(mat[5][3][3],mat[5][2][3],mat[5][1][3],t1,t2,t3);}if(o==4){fu(t1,t2,t3,mat[1][1][1],mat[1][1][2],mat[1][1][3]);fu(mat[1][1][1],mat[1][1][2],mat[1][1][3],mat[4][1][1],mat[4][1][2],mat[4][1][3]);fu(mat[4][1][1],mat[4][1][2],mat[4][1][3],mat[2][1][1],mat[2][1][2],mat[2][1][3]);fu(mat[2][1][1],mat[2][1][2],mat[2][1][3],mat[3][1][1],mat[3][1][2],mat[3][1][3]);fu(mat[3][1][1],mat[3][1][2],mat[3][1][3],t1,t2,t3);fu(t1,t2,t3,mat[5][1][1],mat[5][1][2],mat[5][1][3]);fu(mat[5][1][1],mat[5][1][2],mat[5][1][3],mat[5][1][3],mat[5][2][3],mat[5][3][3]);fu(mat[5][1][3],mat[5][2][3],mat[5][3][3],mat[5][3][3],mat[5][3][2],mat[5][3][1]);fu(mat[5][3][3],mat[5][3][2],mat[5][3][1],mat[5][3][1],mat[5][2][1],mat[5][1][1]);fu(mat[5][3][1],mat[5][2][1],mat[5][1][1],t1,t2,t3);}}int main(){int i, j, k;char s[10];scanf("%s",order+1);for(k=1;k<=6;k++){for(i=1;i<=3;i++){scanf("%s",s+1);for(j=1;j<=3;j++)mat[k][i][j]=s[j]-48;}}for(i=1;order[i];i++)solve((int)order[i]-48);for(k=1;k<=6;k++)show(k);return 0;}
0 0
- luogu2007 魔方
- 魔方
- 魔方
- 魔方
- 魔方
- 魔方
- 魔方
- 魔方
- 魔方
- 魔方
- 魔方
- 魔方
- 魔方
- 魔方
- 魔方
- 魔方
- 魔方
- 魔方
- VMware虚拟机网络设置简述
- [LeetCode]268. Missing Number
- Jenkins RESTful API定制化
- 字符 深入理解java String 对象的不可变性
- URL详解 window.location的一系列方法
- luogu2007 魔方
- 51Nod-1686-第K大区间
- 9. Doctrine2
- 前端HTML<img>标签图像的属性和使用/图像img与背景background的区别
- Leetcode-54. Spiral Matrix
- 线段树
- mysql中的存储过程使用事物后如何正确得到影响行数
- 架构师分类————想成为什么。怎么成为。
- 字符 java中String、StringBuffer、StringBuilder的区别