UVA-253-Cube painting

#include <stdio.h>
#include <string.h>
char cube[20]={'\0'},a[10]={'\0'},b[10]={'\0'},s[10]={'\0'};
int rat[30][10]={{1,2,3,4,5,6},{1,3,5,2,4,6},{1,4,2,5,3,6},{1,5,4,3,2,6},
                 {2,1,4,3,6,5},{2,3,1,6,4,5},{2,4,6,1,3,5},{2,6,3,4,1,5},
                 {3,1,2,5,6,4},{3,2,6,1,5,4},{3,5,1,6,2,4},{3,6,5,2,1,4}};
bool Rotate(char *a,char *b)
{
     char t;int p[10]={0};
     for(int i=0;i<12;i++)
     {
        for(int j=0;j<6;j++)
           s[j]=a[rat[i][j]-1];
        if(!strcmp(s,b)) return true;    //判断相同与否要加上!号
        for(int j=5;j>=0;j--)            //因为前面数组rat只有一半的
           s[5-j]=a[rat[i][j]-1];
        t=s[2]; s[2]=s[3]; s[3]=t;
        if(!strcmp(s,b)) return true;
     }
     return false;
}
int main()
{
    while(scanf("%s",cube)==1)
    {
       for(int i=0;i<6;i++) a[i]=cube[i];
       for(int i=0;i<6;i++) b[i]=cube[i+6];
       if(Rotate(a,b)) printf("TRUE\n");
       else            printf("FALSE\n");
    }
    return 0;
}

 要是凭想象力去找答案,那真是太抽象了,不如制作个盒子去寻找答案,那是很轻松的。我就是制作了一个盒子,会有6个面,然后以每一个面为轴旋转,每个面可产生4个空间视图;这样总共有6*4=24种(其实是23种,因为它本身占一种)。这样,答案就出来啦。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值