UVA-253-Cube painting

来源:互联网 发布:东方财富数据如何下载 编辑:程序博客网 时间:2024/03/29 22:27

#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种,因为它本身占一种)。这样,答案就出来啦。



0 0
原创粉丝点击