We have a machine for painting cubes. It is supplied with three different colors: blue, red and green. Each face of the cube gets one of these colors. The cube’s faces are numbered as in Figure 1.

 Since a cube has 6 faces, our machine can paint a face-numbered cube in 36 =729 different ways. When ignoring the face-numbers, the number of different paintings is much less, because a cube can be rotated. See example below.

 We denote a painted cube by a string of 6 characters, where each character is a ‘b’, ‘r’, or ‘g’. The i-th character (1≤ i ≤6) from the left gives the color of face i. For example, Figure 2 is a picture of “rbgggr” and Figure 3 corresponds to “rggbgr”. Notice that both cubes are painted in the same way: by rotating it around the vertical Figure 1 axis by 90°, the one changes into the other.

Input

 The input of your program is a textfile that ends with the standard end-of-file marker. Each line is a string of 12 characters. The first 6 characters of this string are the representation of a painted cube, the remaining 6 characters give you the representation of another cube. Your program determines whether these two cubes are painted in the same way, that is, whether by any combination of rotations one can be turned into the other. (Reflections are not allowed.)

Output

 The output is a file of boolean. For each line of input, output contains ‘TRUE’ if the second half can be obtained from the first half by rotation as describes above, ‘FALSE’ otherwise.

Sample Input

rbgggrrggbgr
rrrbbbrrbbbr
rbgrbgrrrrrg

Sample Output

TRUE
FALSE
FALSE

HINT

   暴力AC是真的爽啊!!!一开始的想法是将一个正方形分成3个环形的面,然后以一个为标准另一个正方体的面为对照,一共有3!=6种组合方式。自我感觉是没有啥毛病的,但是从udebug上的数据发现了好几个错误,修改了半天一直修不好。然后果断放弃幻想直接暴力。

暴力方法:

  无论一个正方体怎么旋转6个面还是6个面,将所有的6个面的一种情况列出来,然后上底面和下底面固定时又对应四种情况再次列举出来。直接利用循环判断每一种情况,暴力解决。

Accepted

#include<stdio.h>
#include<stdlib.h>
#include<string.h> //6个面分别位于上底面时的其中一种情况
int arr[6][6] = { {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,5,3,4,2,1} };
//上底面和下地面固定对应的4种情况
int arr1[4][6] = { {1,2,3,4,5,6},{1,3,5,2,4,6},{1,4,2,5,3,6},{1,5,4,3,2,6} }; void translate(char* temp, char* s, int* arr2)
{
for (int i = 0;i < 6;i++)
temp[i] = s[arr2[i] - 1];
} int main()
{
char s[13];
while (scanf("%s", s) != EOF)
{
char s1[7] = { 0 };
char s2[7] = { 0 };
strncpy(s1, s, 6); //将两个立方体区分开来
strncpy(s2, s+6, 6);
int flag = 0;
for (int i = 0;i < 6;i++)
{
char temp[7] = { 0 };
char temp1[7] = { 0 };
translate(temp, s1, arr[i]);//先找到一种情况
for (int j = 0;j < 4;j++)
{
translate(temp1, temp, arr1[j]);//判断着一种情况对应的4个状态
if (strncmp(temp1, s2, 6) == 0)
{
flag = 1;
break;
}
}
if (flag)break;
}
printf("%s\n", flag == 1 ? "TRUE" : "FALSE");
}
}

Cube painting UVA - 253的更多相关文章

  1. 骰子涂色 (Cube painting,UVa 253)

    题目描述:算法竞赛入门习题4-4  题目思路:1.旋转其中一个骰子进行匹配 2.进行遍历,如果匹配,就进行相对面的匹配 3.三个对立面都匹配即是一样等价的 //没有按照原题的输入输出 #include ...

  2. uva253 Cube painting(UVA - 253)

    题目大意 输入有三种颜色判断两个骰子是否相同 思路(借鉴) ①先用string输入那12个字符,然后for出两个骰子各自的字符串 ②这里用的算法是先找出第一个的三个面与第二个的六个面去比较,如果找到相 ...

  3. uva 253 - Cube painting(相同骰子)

    习题4-4 骰子涂色(Cube painting, UVa 253) 输入两个骰子,判断二者是否等价.每个骰子用6个字母表示,如图4-7所示. 图4-7 骰子涂色 例如rbgggr和rggbgr分别表 ...

  4. UVA 253 Cube painting(暴力打表)

    Cube painting Problem Description: We have a machine for painting cubes. It is supplied with three d ...

  5. UVA 253 (13.08.06)

     Cube painting  We have a machine for painting cubes. It is supplied withthree different colors: blu ...

  6. UVa 253

    UVa 253 #include <iostream> #include <cstdio> #include <string> #include <cstri ...

  7. UVA 253 Cube painting

    大致题意:有三种颜色,一个立方体6面都可以涂一种颜色.现在给出两个每个面都涂好颜色的立方体,判断这两个立方体通过旋转是否相等. 立方体的旋转出来的结果有很多,首先可以0,1,2,3,4,5(顺序是:上 ...

  8. UVA 253 Cube painting(枚举 模拟)

    题意: 按如图的顺序给定2个骰子的颜色(只有r.b.g三种颜色) 问2个骰子是否一模一样 如 可表示为“rbgggr” 和 “rggbgr”, 第二个就是绕着Z轴顺时针旋转90度与第一个相同的骰子. ...

  9. 【习题 4-4 UVA - 253】Cube painting

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 绕(x,y,z)三个轴旋转. 枚举x,y,z各4次的结果. (4次之后能还原.可以方便上一层枚举下一个情况.) [代码] #incl ...

随机推荐

  1. 扒几个 3D 模型备用

    前言 在上一篇中,我展示了 OpenGL 开发的基本过程,算是向 3D 世界迈出的一小步吧.对于简单的 3D 物体,比如立方体.球体.圆环等等,我们只需要简单的计算就可以得到他们的顶点的坐标.但是仅仅 ...

  2. Django Admin 在内联中覆盖保存方法(admin.TabularInline)

    一  使用环境 开发系统: windows IDE: pycharm 数据库: msyql,navicat 编程语言: python3.7  (Windows x86-64 executable in ...

  3. 为什么我们在定义HashMap的时候,就指定它的初始化大小呢

    在当我们对HashMap初始化时没有设置初始化容量,系统会默认创建一个容量为16的大小的集合.当HashMap的容量值超过了临界值(默认16*0.75=12)时,HashMap将会重新扩容到下一个2的 ...

  4. 实现 Abp Vnext Pro

    Abp Vnext Pro 的 Vue 实现版本 开箱即用的中后台前端/设计解决方案 知识点 .Net Core5.0 Abp Vnext 4.x , Ant Design, Vue2.x Mysql ...

  5. C++类的友元机制说明

    下面给出C++类的友元机制说明(对类private.protected成员访问),需要注意的是,友元机制尽量不用或者少用,虽然它会提供某种程度的效率,但会带来数据安全性的问题. 类的友元 友元是C++ ...

  6. 机器学习系统或者SysML&DL笔记(一)

    前言 在使用过TVM.TensorRT等优秀的机器学习编译优化系统以及Pytorch.Keras等深度学习框架后,总觉得有必要从理论上对这些系统进行一些分析,虽然说在实践中学习是最快最直接的(指哪儿打 ...

  7. ThinkAdmin v6 未授权列目录/任意文件读取复现

    大佬的审计文章:https://github.com/zoujingli/ThinkAdmin/issues/244 任意文件读取 POC curl http://127.0.0.1/admin.ht ...

  8. 使用SQLSERVER 2008 R2 配置邮件客户端发送DB数据流程要领

    设置邮件 QQ邮箱貌似不太行,建议用企业邮箱或者其他邮箱作为发件箱 新建一个邮件发件箱账号,具体邮件服务器按照各自邮件配置,是否使用ssl,自便 下一步,下一步,配置成功 use msdb Go DE ...

  9. HDU_5414 CRB and String 【字符串】

    一.题目 CRB and String 二.分析 对于这题,读懂题意非常重要. 题目的意思是在$s$的基础上,按题目中所描述的步骤,即在$s$中任意选择一个字符$c$,在这个字符后面添加一个不等于$c ...

  10. 2019 GDUT Rating Contest I : Problem G. Back and Forth

    题面: G. Back and Forth Input file: standard input Output file: standard output Time limit: 1 second Mem ...