码迷,mamicode.com
首页 > 其他好文 > 详细

hdu Pocket Cube(结论题)

时间:2015-07-22 10:34:44      阅读:90      评论:0      收藏:0      [点我收藏+]

标签:

题意:给出一个二阶魔方的状态,求是否能还原;

参考:http://blog.csdn.net/squee_spoon/article/details/46990969(郑大cuber)

思路:一个二阶魔方的相邻角块交换情况如下图;

         将终状态的每个方块赋值,旋转后权值不会变化;

        考虑题干中黄白为对立面,将其权值赋0;

         顺时针赋1,否则-1;

        若黄白块的权值和被三整除,可还原;否则不可还原;

技术分享技术分享

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int t,n,m,ans;
char str[30];
int mark[]={1,-1,-1,1,-1,1,0,0,-1,1,1,-1,0,0,1,-1,1,-1,-1,1,0,0,0,0};
int main()
{
   int i,j,k,cas;
   scanf("%d",&t);
   for(cas=1;cas<=t;cas++)
   {
       ans=0;
       for(i=0;i<24;i++)
       {
           scanf("%s",str);
           if(str[0]==w||str[0]==y){
                ans+=mark[i];   
           }
       }
       printf("Case #%d: ",cas);
       if(ans%3==0) printf("YES\n");
       else printf("NO\n");
   }
   return 0;
}

 

hdu Pocket Cube(结论题)

标签:

原文地址:http://www.cnblogs.com/dominating/p/4666571.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!