NOIP2016模拟 拼接mf(模拟)
Posted 可惜没如果=_=
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NOIP2016模拟 拼接mf(模拟)相关的知识,希望对你有一定的参考价值。
1 #include "bits/stdc++.h" 2 using namespace std; 3 typedef long long LL; 4 const int MAX=10; 5 char n[105]; 6 struct Cube{ 7 int c[MAX][MAX][MAX];//前 后 左 右 上 下 8 void out(){ 9 int i,j,k; 10 for (i=1;i<=6;i++){ 11 for (j=1;j<=3;j++){ 12 for (k=1;k<=3;k++) 13 printf("%d",c[i][j][k]); 14 printf("\\n"); 15 } 16 } 17 } 18 void work1(){ 19 int i,j,k,h; 20 int a[MAX],vv[MAX][MAX]; 21 a[1]=c[1][1][3],a[2]=c[1][2][3],a[3]=c[1][3][3]; 22 c[1][1][3]=c[6][1][3],c[1][2][3]=c[6][2][3],c[1][3][3]=c[6][3][3];//下→前 23 c[6][1][3]=c[2][1][3],c[6][2][3]=c[2][2][3],c[6][3][3]=c[2][3][3];//后→下 24 c[2][1][3]=c[5][1][3],c[2][2][3]=c[5][2][3],c[2][3][3]=c[5][3][3];//上→后 25 c[5][1][3]=a[1],c[5][2][3]=a[2],c[5][3][3]=a[3];//前→上 26 for (k=1;k<=3;k++) 27 for (h=1;h<=3;h++) 28 vv[k][h]=c[4][k][h]; 29 c[4][1][3]=vv[1][1],c[4][2][3]=vv[1][2],c[4][3][3]=vv[1][3]; 30 c[4][1][2]=vv[2][1],c[4][2][2]=vv[2][2],c[4][3][2]=vv[2][3]; 31 c[4][1][1]=vv[3][1],c[4][2][1]=vv[3][2],c[4][3][1]=vv[3][3]; 32 } 33 void work2(){ 34 int i,j,k,h; 35 int a[MAX],vv[MAX][MAX]; 36 for (i=1;i<=3;i++){ 37 a[1]=c[1][1][3],a[2]=c[1][2][3],a[3]=c[1][3][3]; 38 c[1][1][3]=c[6][1][3],c[1][2][3]=c[6][2][3],c[1][3][3]=c[6][3][3];//下→前 39 c[6][1][3]=c[2][1][3],c[6][2][3]=c[2][2][3],c[6][3][3]=c[2][3][3];//后→下 40 c[2][1][3]=c[5][1][3],c[2][2][3]=c[5][2][3],c[2][3][3]=c[5][3][3];//上→后 41 c[5][1][3]=a[1],c[5][2][3]=a[2],c[5][3][3]=a[3];//前→上 42 for (k=1;k<=3;k++) 43 for (h=1;h<=3;h++) 44 vv[k][h]=c[4][k][h]; 45 c[4][1][3]=vv[1][1],c[4][2][3]=vv[1][2],c[4][3][3]=vv[1][3]; 46 c[4][1][2]=vv[2][1],c[4][2][2]=vv[2][2],c[4][3][2]=vv[2][3]; 47 c[4][1][1]=vv[3][1],c[4][2][1]=vv[3][2],c[4][3][1]=vv[3][3]; 48 } 49 } 50 void work3(){ 51 int i,j,k,h; 52 int a[MAX];int vv[MAX][MAX]; 53 a[1]=c[1][1][1],a[2]=c[1][1][2],a[3]=c[1][1][3]; 54 c[1][1][1]=c[3][1][1],c[1][1][2]=c[3][1][2],c[1][1][3]=c[3][1][3];//左→前 55 c[3][1][1]=c[2][1][1],c[3][1][2]=c[2][1][2],c[3][1][3]=c[2][1][3];//后→左 56 c[2][1][1]=c[4][1][1],c[2][1][2]=c[4][1][2],c[2][1][3]=c[4][1][3];//右→后 57 c[4][1][1]=a[1],c[4][1][2]=a[2],c[4][1][3]=a[3];//前→右 58 for (k=1;k<=3;k++) 59 for (h=1;h<=3;h++) 60 vv[k][h]=c[5][k][h]; 61 c[5][1][3]=vv[1][1],c[5][2][3]=vv[1][2],c[5][3][3]=vv[1][3]; 62 c[5][1][2]=vv[2][1],c[5][2][2]=vv[2][2],c[5][3][2]=vv[2][3]; 63 c[5][1][1]=vv[3][1],c[5][2][1]=vv[3][2],c[5][3][1]=vv[3][3]; 64 } 65 void work4(){ 66 int i,j,k,h; 67 int a[MAX];int vv[MAX][MAX]; 68 for (i=1;i<=3;i++){ 69 a[1]=c[1][1][1],a[2]=c[1][1][2],a[3]=c[1][1][3]; 70 c[1][1][1]=c[3][1][1],c[1][1][2]=c[3][1][2],c[1][1][3]=c[3][1][3];//左→前 71 c[3][1][1]=c[2][1][1],c[3][1][2]=c[2][1][2],c[3][1][3]=c[2][1][3];//后→左 72 c[2][1][1]=c[4][1][1],c[2][1][2]=c[4][1][2],c[2][1][3]=c[4][1][3];//右→后 73 c[4][1][1]=a[1],c[4][1][2]=a[2],c[4][1][3]=a[3];//前→右 74 for (k=1;k<=3;k++) 75 for (h=1;h<=3;h++) 76 vv[k][h]=c[5][k][h]; 77 c[5][1][3]=vv[1][1],c[5][2][3]=vv[1][2],c[5][3][3]=vv[1][3]; 78 c[5][1][2]=vv[2][1],c[5][2][2]=vv[2][2],c[5][3][2]=vv[2][3]; 79 c[5][1][1]=vv[3][1],c[5][2][1]=vv[3][2],c[5][3][1]=vv[3][3]; 80 } 81 } 82 }mat; 83 inline int read(){char c;int an(0);c=getchar();while (c<\'0\'||c>\'9\')c=getchar();while (c>=\'0\'&&c<=\'9\'){an=an*10+c-\'0\';c=getchar();}return an;} 84 int main(){ 85 freopen ("cube.in","r",stdin); 86 freopen ("cube.out","w",stdout); 87 gets(n+1); 88 int ln=strlen(n+1),cc,i,j,k; 89 for (i=1;i<=6;i++){ 90 for (j=1;j<=3;j++){ 91 cc=read(); 92 mat.c[i][j][3]=cc%10;cc/=10; 93 mat.c[i][j][2]=cc%10;cc/=10; 94 mat.c[i][j][1]=cc%10;cc/=10; 95 } 96 } 97 for (i=1;i<=ln;i++){ 98 if (n[i]==\'1\') mat.work1(); 99 if (n[i]==\'2\') mat.work2(); 100 if (n[i]==\'3\') mat.work3(); 101 if (n[i]==\'4\') mat.work4(); 102 } 103 mat.out(); 104 return 0; 105 }
以上是关于NOIP2016模拟 拼接mf(模拟)的主要内容,如果未能解决你的问题,请参考以下文章