习题4-4 骰子涂色(Cube painting, UVa 253)

输入两个骰子,判断二者是否等价。每个骰子用6个字母表示。

这题有点懵,解题的方法,完全没有和函数有半毛钱关系啊。和之前几题完全不同。 这题纯粹就是找规律

规律很明显 如果能通过旋转得到的话 那么两个骰子的对应面一定是相等的

比如 A 筛子 的 1 等于 B 筛子 1 那么 A筛子的 6就一定 等于 B筛子的 6如果不相等的话那么就说明不能通过旋转得到

(来自 vj 上别人的AC代码)

#include  

#define mem(a,b) memset(a,b,sizeof(a))
const int maxd =10;
const int inf = 0x3f3f3f3f;

char s[maxd],a[maxd],b[maxd];
int main(void)
{
    while(scanf("%s",s)!=EOF)
    {
        for(int i = 0;i<6;i++)
        {
            a[i] = s[i];
            b[i] = s[i+6];
        }
        int sum = 0;
        for(int i = 0;i<3;i++)
        {
            for(int j = 0;j<6;j++)
            if(a[i] == b[j]&&a[5-i] == b[5-j]){
                a[i] = a[5-i] = 'a';
                b[j] = b[5-j] = 'c';
                sum ++;
                printf("%s %s %d\n",a,b,sum);
            }
        }
        puts(sum == 3?"TRUE":"FALSE");
    }
    return 0;
}

 

你可能感兴趣的:(刘汝佳紫书)