codeforces887C(模拟)

来源:互联网 发布:2017编程语言薪资 编辑:程序博客网 时间:2024/06/15 21:18

原题:2016icpc西安现场赛B
题意:给你一个二阶魔方各个方块的颜色,问是否能够一步还原。
分析:简单的模拟一下就行了….总共就六种操作
AC代码:

#include <iostream>#include <cstdio>using namespace std;int a[7][5];int b[7][5];bool judge(){    int i=0;    for(int j=1;j<=6;j++){        if(a[j][1]==a[j][2]&&a[j][2]==a[j][3]&&a[j][3]==a[j][4]){            i++;        }    }    if(i==6){        return true;    }else{        return false;    }}void opera1(){    int t1,t2;    t1=a[1][3];    t2=a[1][4];    a[1][3]=a[4][4];    a[1][4]=a[4][2];    a[4][2]=a[3][1];    a[4][4]=a[3][2];    a[3][1]=a[5][3];    a[3][2]=a[5][1];    a[5][1]=t1;    a[5][3]=t2;}void opera2(){    int t1,t2;    t1=a[5][1];    t2=a[5][3];    a[5][1]=a[3][2];    a[5][3]=a[3][1];    a[3][1]=a[4][2];    a[3][2]=a[4][4];    a[4][2]=a[1][3];    a[4][4]=a[1][4];    a[1][4]=t2;    a[1][3]=t1;}void opera3(){    int t1,t2;    t1=a[2][1];    t2=a[2][2];    a[2][1]=a[4][1];    a[2][2]=a[4][2];    a[4][1]=a[6][1];    a[4][2]=a[6][2];    a[6][1]=a[5][1];    a[6][2]=a[5][2];    a[5][1]=t1;    a[5][2]=t2;}void opera4(){    int t1,t2;    t1=a[2][1];    t2=a[2][2];    a[2][1]=a[5][1];    a[2][2]=a[5][2];    a[5][1]=a[6][1];    a[5][2]=a[6][2];    a[6][1]=a[4][1];    a[6][2]=a[4][2];    a[4][1]=t2;    a[4][2]=t1;}void opera5(){    int t1,t2;    t1=a[1][1];    t2=a[1][3];    a[1][1]=a[2][1];    a[1][3]=a[2][3];    a[2][1]=a[3][1];    a[2][3]=a[3][3];    a[3][1]=a[6][2];    a[3][3]=a[6][4];    a[6][2]=t1;    a[6][4]=t2;}void opera6(){    int t1,t2;    t1=a[1][1];    t2=a[1][3];    a[1][1]=a[6][2];    a[1][3]=a[6][4];    a[6][2]=a[3][1];    a[6][4]=a[3][3];    a[3][1]=a[2][1];    a[3][3]=a[2][3];    a[2][1]=t1;    a[2][3]=t2;}int main(){        for(int i=1;i<=6;i++){            for(int j=1;j<=4;j++){                scanf("%d",&a[i][j]);                b[i][j]=a[i][j];            }        }        if(judge()){            printf("NO\n");            return 0;        }        opera1();        if(judge()){            printf("YES\n");            return 0;        }        for(int i=1;i<=6;i++){            for(int j=1;j<=4;j++){                a[i][j]=b[i][j];            }        }        opera2();        if(judge()){            printf("YES\n");            return 0;        }        for(int i=1;i<=6;i++){            for(int j=1;j<=4;j++){                a[i][j]=b[i][j];            }        }        opera3();        if(judge()){            printf("YES\n");            return 0;        }        for(int i=1;i<=6;i++){            for(int j=1;j<=4;j++){                a[i][j]=b[i][j];            }        }        opera4();        if(judge()){            printf("YES\n");            return 0;        }        for(int i=1;i<=6;i++){            for(int j=1;j<=4;j++){                a[i][j]=b[i][j];            }        }        opera5();        if(judge()){            printf("YES\n");            return 0;        }        for(int i=1;i<=6;i++){            for(int j=1;j<=4;j++){                a[i][j]=b[i][j];            }        }        opera6();        if(judge()){            printf("YES\n");            return 0;        }        for(int i=1;i<=6;i++){            for(int j=1;j<=4;j++){                a[i][j]=b[i][j];            }        }        printf("NO\n");    return 0;}
原创粉丝点击