4-4 Cube Painting

来源:互联网 发布:手机html编程工具 编辑:程序博客网 时间:2024/05/16 04:49

因为题目中描述骰子的方法是给其六个面进行编号,所以一个骰子只有24种情况:每一个号朝上就有6种,而每一个面进行横向旋转便又得到4种,总共有24种:

只需要提取出输入的字符串前6位,把24种情况打到表格里,进行查询即可:

#include<stdio.h>#include<string.h>#define MAX 30int cont = 1;char str_body[MAX][MAX];char str_head[MAX][MAX];const int head[6][MAX]= {{1,2,3,4,5,6},{2,6,3,4,1,5},{3,2,6,1,5,4},{4,2,1,6,5,3},{5,1,3,4,6,2},{6,2,4,3,5,1}};const int head2[6][MAX] = {{1,2,3,4,5,6},{1,3,5,2,4,6},{1,5,4,3,2,6},{1,4,2,5,3,6}};void go(char a[]){    int i,j;    for (i = 0; i < 6; i++)        for (j = 0; j < 6; j++)        {            int num = head[i][j] - 1;            str_head[i][j] = a[num];        }}void body(){    int i,j,cont = 0,h;    for (i = 0; i < 6; i++)    {        for (j = 0; j < 4; j++)        {            for (h = 0; h < 6; h++)            {                int num = head2[j][h] - 1;                str_body[cont][h] = str_head[i][num];            }            cont++;        }    }}int main(){    char str[MAX];    char s[MAX];    while(~scanf("%s",str))    {        int i;        go(str);        body();        for (i = 0; i < 24; i++)            if (strcmp(str+6,str_body[i]) == 0){printf("TRUE\n");break;}        if (i == 24)printf("FALSE\n");    }    return 0;}


1 0