HDU 5983Pocket Cube

来源:互联网 发布:淘宝无忧美淘店 编辑:程序博客网 时间:2024/05/16 12:18

http://acm.hdu.edu.cn/showproblem.php?pid=5983



给出2*2魔方的6个面,问能否在1次90度转动之内将魔方复原。
码农题,因为拧2*2魔方一次只有6种可能,所以只要写6遍数字的转换,再写一个判断即可。




#include<bits/stdc++.h>using namespace std;int a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x;int a1,b1,c1,d1,e1,f1,g1,h1,i1;int lss,k1,l1,m1,n1,o1,p1,q1,r1,s1,t1,u1,v1,w1,x1;bool flag;void check(){if(a1==b1&&b1==c1&&c1==d1&&e1==f1&&f1==g1&&g1==h1&&i1==lss&&lss==k1&&k1==l1&&m1==n1&&n1==o1&&o1==p1&&q1==r1&&r1==s1&&s1==t1&&u1==v1&&v1==w1&&w1==x1)flag=1;}int main(){    int T;    cin>>T;    while(T--)    {    flag=0;    cin>>a>>b>>c>>d>>e>>f>>g>>h>>i>>j>>k>>l>>m>>n>>o>>p>>q>>r>>s>>t>>u>>v>>w>>x;    a1=a,b1=b,c1=c,d1=d,e1=e,f1=f,g1=g,h1=h,i1=i,lss=j,k1=k,l1=l,m1=m,n1=n,o1=o,p1=p,q1=q,r1=r,s1=s,t1=t,u1=u,v1=v,w1=w,x1=x;    check();    swap(a1,m1);    swap(a1,e1);    swap(e1,i1);    swap(c1,o1);    swap(g1,c1);    swap(k1,g1);    check();    a1=a,b1=b,c1=c,d1=d,e1=e,f1=f,g1=g,h1=h,i1=i,lss=j,k1=k,l1=l,m1=m,n1=n,o1=o,p1=p,q1=q,r1=r,s1=s,t1=t,u1=u,v1=v,w1=w,x1=x;     swap(e1,i1);swap(a1,e1);swap(a1,m1);swap(k1,g1);swap(g1,c1);swap(c1,o1);      check();      a1=a,b1=b,c1=c,d1=d,e1=e,f1=f,g1=g,h1=h,i1=i,lss=j,k1=k,l1=l,m1=m,n1=n,o1=o,p1=p,q1=q,r1=r,s1=s,t1=t,u1=u,v1=v,w1=w,x1=x;    swap(u1,o1);    swap(u1,f1);    swap(f1,t1);    swap(w1,p1);    swap(e1,w1);    swap(r1,e1);    check();   a1=a,b1=b,c1=c,d1=d,e1=e,f1=f,g1=g,h1=h,i1=i,lss=j,k1=k,l1=l,m1=m,n1=n,o1=o,p1=p,q1=q,r1=r,s1=s,t1=t,u1=u,v1=v,w1=w,x1=x;       swap(f1,t1);  swap(u1,f1);    swap(u1,o1);  swap(r1,e1);swap(e1,w1);    swap(w1,p1);    check();    a1=a,b1=b,c1=c,d1=d,e1=e,f1=f,g1=g,h1=h,i1=i,lss=j,k1=k,l1=l,m1=m,n1=n,o1=o,p1=p,q1=q,r1=r,s1=s,t1=t,u1=u,v1=v,w1=w,x1=x;    swap(s1,i1);    swap(s1,c1);    swap(c1,w1);    swap(t1,lss);    swap(d1,t1);    swap(x1,d1);check();    a1=a,b1=b,c1=c,d1=d,e1=e,f1=f,g1=g,h1=h,i1=i,lss=j,k1=k,l1=l,m1=m,n1=n,o1=o,p1=p,q1=q,r1=r,s1=s,t1=t,u1=u,v1=v,w1=w,x1=x;swap(c1,w1);    swap(s1,c1);    swap(s1,i1);    swap(x1,d1);    swap(d1,t1);    swap(t1,lss);check();if(flag)cout<<"YES"<<endl;else cout<<"NO"<<endl;    }return 0;}