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

    P2007 魔方

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

    模拟即可:

    #include<iostream>
    #include<cstdio>
    #include<cstdlib>
    #include<algorithm>
    #include<cstring>
    
    using namespace std;
    
    string s;
    int a[7][4][4];
    //    1 2   3   4   5  6
    //前、后、左、右、上、下。
    
    
    void cz1() {
        int x=a[1][1][3],y=a[1][2][3],z=a[1][3][3];
        for(int i=1; i<=3; i++) a[1][i][3]=a[6][i][3];
        for(int i=1; i<=3; i++) a[6][i][3]=a[2][i][3];
        for(int i=1; i<=3; i++) a[2][i][3]=a[5][i][3];
        a[5][1][3]=x,a[5][2][3]=y,a[5][3][3]=z;
    
        int p[4][4];
        for(int i=1; i<=3; i++) {
            for(int j=1; j<=3; j++) {
                p[i][j]=a[4][3-j+1][i];
            }
        }
        for(int i=1; i<=3; i++)
            for(int j=1; j<=3; j++)
                a[4][i][j]=p[i][j];
    }
    
    void cz2() {
        int x=a[1][1][3],y=a[1][2][3],z=a[1][3][3];
        for(int i=1; i<=3; i++) a[1][i][3]=a[5][i][3];
        for(int i=1; i<=3; i++) a[5][i][3]=a[2][i][3];
        for(int i=1; i<=3; i++) a[2][i][3]=a[6][i][3];
        a[6][1][3]=x,a[6][2][3]=y,a[6][3][3]=z;
    
        int p[4][4];
        for(int i=1; i<=3; i++) {
            for(int j=1; j<=3; j++) {
                p[i][j]=a[4][j][3-i+1];
            }
        }
        for(int i=1; i<=3; i++)
            for(int j=1; j<=3; j++)
                a[4][i][j]=p[i][j];
    }
    
    void cz3(){
        int x=a[1][1][1],y=a[1][1][2],z=a[1][1][3];
        for(int i=1; i<=3; i++) a[1][1][i]=a[3][1][i];
        for(int i=1; i<=3; i++) a[3][1][i]=a[2][1][i];
        for(int i=1; i<=3; i++) a[2][1][i]=a[4][1][i];
        a[4][1][1]=x,a[4][1][2]=y,a[4][1][3]=z;
    
        int p[4][4];
        for(int i=1; i<=3; i++) {
            for(int j=1; j<=3; j++) {
                p[i][j]=a[5][3-j+1][i];
            }
        }
        for(int i=1; i<=3; i++)
            for(int j=1; j<=3; j++)
                a[5][i][j]=p[i][j];
    }
    
    void cz4(){
        int x=a[1][1][1],y=a[1][1][2],z=a[1][1][3];
        for(int i=1; i<=3; i++) a[1][1][i]=a[4][1][i];
        for(int i=1; i<=3; i++) a[4][1][i]=a[2][1][i];
        for(int i=1; i<=3; i++) a[2][1][i]=a[3][1][i];
        a[3][1][1]=x,a[3][1][2]=y,a[3][1][3]=z;
        
        int p[4][4];
        for(int i=1; i<=3; i++) {
            for(int j=1; j<=3; j++) {
                p[i][j]=a[5][j][3-i+1];
            }
        }
        for(int i=1; i<=3; i++)
            for(int j=1; j<=3; j++)
                a[5][i][j]=p[i][j];
    }
    
    void print()
    {
        puts("xxxxxxxxxxxxxxxxxxxxxxx
    ");
        for(int i=1; i<=6; i++) {
            for(int j=1; j<=3; j++) {
                for(int k=1; k<=3; k++) {
                    printf("%d",a[i][j][k]);
                }
                puts("");
            }
        }
    }
    
    int main() {
        cin>>s;
        for(int i=1; i<=6; i++) {
            for(int j=1; j<=3; j++) {
                for(int k=1; k<=3; k++)
                    scanf("%1d",&a[i][j][k]);
            }
        }
    
        int l=s.length();
        for(int i=0; i<l; i++) {
            if(s[i]=='1') cz1();
            else if(s[i]=='2') cz2();
            else if(s[i]=='3') cz3();
            else cz4();
    //        print();
        }
    
        for(int i=1; i<=6; i++) {
            for(int j=1; j<=3; j++) {
                for(int k=1; k<=3; k++) {
                    printf("%d",a[i][j][k]);
                }
                puts("");
            }
        }
        return 0;
    }
  • 相关阅读:
    计算机中丢失OPENGL.dll
    BAT或赌在当下或押在未来,谁是王者?
    singleton
    计算机原理扫盲
    汇编扫盲
    sublime text 3 使用过程总结记录
    sublime text3侧边栏主题不生效问题解决
    atom初体验
    Sublime Text 3 快捷键总结
    微信后台开发第一步:nodeJS+express接入微信后台详细教程
  • 原文地址:https://www.cnblogs.com/song-/p/9646905.html
Copyright © 2011-2022 走看看