zoukankan      html  css  js  c++  java
  • 洛谷——P2007 魔方

    https://www.luogu.org/problem/show?pid=2007

    题目背景

    常神牛从来没接触过魔方,所以他要借助计算机来玩。即使是这样,他还是很菜。

    题目描述

    常神牛家的魔方都是3*3*3的三阶魔方,大家都见过。

    (更正:3 4以图为准。)

    作为一名菜鸟,常神牛从网上搜了一篇攻略,并找人翻译成了他自己会做的方法。现在告诉你他的魔方情况,以及他从网上搜到的攻略,请你求出最后魔方变成什么样子。

    输入输出格式

    输入格式:

    输入文件为cube.out。

    第一行,一串数字(长度不大于100),表示常神牛从网上搜到的攻略。

    下面6*3行,每行3个数字,每三行表示魔方一个面的情况,六个面的顺序是前、后、左、右、上、下。

    输出格式:

    输出文件为cube.out。

    6*3行,表示处理后的魔方,形式同输入。

    输入输出样例

    输入样例#1:
    23
    121
    221
    111
    123
    321
    111
    123
    321
    132
    132
    231
    132
    121
    112
    233
    332
    111
    333
    输出样例#1:
    123
    222
    113
    212
    321
    113
    122
    321
    132
    121
    333
    121
    211
    312
    113
    331
    111
    331

    说明

    【样例解释】

      是2操作后

    最恶心的模拟教会了我要看样例解释~

      1 #include <cstring>
      2 #include <cstdio>
      3 
      4 using namespace std;
      5 
      6 const int N(119);
      7 char s[N],num[4];
      8 int wait[4],wait_[5];
      9 int fro[4][4],beh[4][4];
     10 int lef[4][4],rig[4][4];
     11 int ove[4][4],und[4][4];
     12 
     13 void Cone()
     14 {
     15     for(int i=1;i<=3;i++) wait[i]=fro[i][3];
     16     for(int i=1;i<=3;i++) fro[i][3]=und[i][3];
     17     for(int i=1;i<=3;i++) und[i][3]=beh[i][3];
     18     for(int i=1;i<=3;i++) beh[i][3]=ove[i][3];
     19     wait_[1]=rig[1][1];wait_[2]=rig[1][3];wait_[3]=rig[3][1];wait_[4]=rig[3][3];
     20     for(int i=1;i<=3;i++) ove[i][3]=wait[i];
     21     for(int i=1;i<=3;i++) wait[i]=rig[i][1];
     22     for(int i=1;i<=3;i++) rig[i][1]=rig[3][i];
     23     for(int i=1;i<=3;i++) rig[3][i]=rig[3-i+1][3];
     24     for(int i=1;i<=3;i++) rig[i][3]=rig[1][i];
     25     for(int i=1;i<=3;i++) rig[1][i]=wait[3-i+1];
     26     rig[1][1]=wait_[3];rig[1][3]=wait_[1];rig[3][1]=wait_[4];rig[3][3]=wait_[2];
     27 }
     28 
     29 void Ctwo()
     30 {
     31     for(int i=1;i<=3;i++) wait[i]=fro[i][3];
     32     for(int i=1;i<=3;i++) fro[i][3]=ove[i][3];
     33     for(int i=1;i<=3;i++) ove[i][3]=beh[i][3];
     34     for(int i=1;i<=3;i++) beh[i][3]=und[i][3];
     35     for(int i=1;i<=3;i++) und[i][3]=wait[i];    
     36     wait_[1]=rig[1][1];wait_[2]=rig[1][3];wait_[3]=rig[3][1];wait_[4]=rig[3][3];
     37     for(int i=1;i<=3;i++) wait[i]=rig[i][1];
     38     for(int i=1;i<=3;i++) rig[i][1]=rig[1][3-i+1];
     39     for(int i=1;i<=3;i++) rig[1][i]=rig[i][3];
     40     for(int i=1;i<=3;i++) rig[i][3]=rig[3][3-i+1];
     41     for(int i=1;i<=3;i++) rig[3][i]=wait[i];
     42     rig[1][1]=wait_[2];rig[1][3]=wait_[4];rig[3][1]=wait_[1];rig[3][3]=wait_[3];
     43 }
     44 
     45 void Cthree()
     46 {
     47     for(int i=1;i<=3;i++) wait[i]=fro[1][i];
     48     for(int i=1;i<=3;i++) fro[1][i]=lef[1][i];
     49     for(int i=1;i<=3;i++) lef[1][i]=beh[1][i];
     50     for(int i=1;i<=3;i++) beh[1][i]=rig[1][i];
     51     for(int i=1;i<=3;i++) rig[1][i]=wait[i];
     52     wait_[1]=ove[1][1];wait_[2]=ove[1][3];wait_[3]=ove[3][1];wait_[4]=ove[3][3];
     53     for(int i=1;i<=3;i++) wait[i]=ove[1][i];
     54     for(int i=1;i<=3;i++) ove[1][i]=ove[3-i+1][1];
     55     for(int i=1;i<=3;i++) ove[i][1]=ove[3][i];
     56     for(int i=1;i<=3;i++) ove[3][i]=ove[3-i+1][3];
     57     for(int i=1;i<=3;i++) ove[i][3]=wait[i];
     58     ove[1][1]=wait_[3];ove[1][3]=wait_[1];ove[3][1]=wait_[4];ove[3][3]=wait_[2];
     59 }
     60 
     61 void Cfour()
     62 {
     63     for(int i=1;i<=3;i++) wait[i]=fro[1][i];
     64     for(int i=1;i<=3;i++) fro[1][i]=rig[1][i];
     65     for(int i=1;i<=3;i++) rig[1][i]=beh[1][i];
     66     for(int i=1;i<=3;i++) beh[1][i]=lef[1][i];
     67     for(int i=1;i<=3;i++) lef[1][i]=wait[i];
     68     wait_[1]=ove[1][1];wait_[2]=ove[1][3];wait_[3]=ove[3][1];wait_[4]=ove[3][3];
     69     for(int i=1;i<=3;i++) wait[i]=ove[1][i];
     70     for(int i=1;i<=3;i++) ove[1][i]=ove[i][3];
     71     for(int i=1;i<=3;i++) ove[i][3]=ove[3][3-i+1];
     72     for(int i=1;i<=3;i++) ove[3][i]=ove[i][1];
     73     for(int i=1;i<=3;i++) ove[i][1]=wait[3-i+1];
     74     ove[1][1]=wait_[2];ove[1][3]=wait_[4];ove[3][1]=wait_[1];ove[3][3]=wait_[3];
     75 }
     76 
     77 int main()
     78 {
     79 //    freopen("cube.in","r",stdin);
     80 //    freopen("cube.out","w",stdout);
     81     scanf("%s",s);
     82     for(int i=1;i<=3;i++)
     83     { scanf("%s",num);for(int j=1;j<=3;j++) fro[i][j]=num[j-1]-'0'; }    
     84     for(int i=1;i<=3;i++)
     85     { scanf("%s",num);for(int j=1;j<=3;j++) beh[i][j]=num[j-1]-'0'; }
     86     for(int i=1;i<=3;i++)
     87     { scanf("%s",num);for(int j=1;j<=3;j++) lef[i][j]=num[j-1]-'0'; }
     88     for(int i=1;i<=3;i++)
     89     { scanf("%s",num);for(int j=1;j<=3;j++) rig[i][j]=num[j-1]-'0'; }
     90     for(int i=1;i<=3;i++)
     91     { scanf("%s",num);for(int j=1;j<=3;j++) ove[i][j]=num[j-1]-'0'; }
     92     for(int i=1;i<=3;i++)
     93     { scanf("%s",num);for(int j=1;j<=3;j++) und[i][j]=num[j-1]-'0'; }
     94     for(int i=0;i<strlen(s);i++)
     95         if(s[i]=='1')       Cone();
     96         else if(s[i]=='2') Ctwo();
     97         else if(s[i]=='3') Cthree();
     98         else if(s[i]=='4') Cfour();
     99     for(int i=1;i<=3;i++)
    100     { for(int j=1;j<=3;j++) printf("%d",fro[i][j]); printf("
    "); }
    101     for(int i=1;i<=3;i++)
    102     { for(int j=1;j<=3;j++) printf("%d",beh[i][j]); printf("
    "); }
    103     for(int i=1;i<=3;i++)
    104     { for(int j=1;j<=3;j++) printf("%d",lef[i][j]); printf("
    "); }
    105     for(int i=1;i<=3;i++)
    106     { for(int j=1;j<=3;j++) printf("%d",rig[i][j]); printf("
    "); }
    107     for(int i=1;i<=3;i++)
    108     { for(int j=1;j<=3;j++) printf("%d",ove[i][j]); printf("
    "); }
    109     for(int i=1;i<=3;i++)
    110     { for(int j=1;j<=3;j++) printf("%d",und[i][j]); printf("
    "); }
    111     return 0;
    112 }
    ——每当你想要放弃的时候,就想想是为了什么才一路坚持到现在。
  • 相关阅读:
    新装的idea需要设置的项目
    bug活动文章地址
    环形链表的问题
    IntelliJ配置jenkins服务的Crumb Data
    算法问题求数组排序后最大相邻数差
    jdk11安装以及无jre解决方法
    算法问题大数相加
    java中级技术点
    算法实现 出入栈,寻找最小值
    算法问题2的整数次幂
  • 原文地址:https://www.cnblogs.com/Shy-key/p/6913950.html
Copyright © 2011-2022 走看看