24665-7 n色方柱问题

2466   5-7 n色方柱问题

题目描述

设有n个立方体,每个立方体的每一面用红、黄、蓝、绿等n种颜色之一染色。要把这n个立方体叠成一个方形柱体,使得柱体的4个侧面的每一侧均有n种不同的颜色。对于给定的n个立方体以及每个立方体各面的颜色,试设计一个回溯算法,计算出n个立方体的一种叠置方案,使得柱体的4 个侧面的每一侧均有n种不同的颜色。

输入格式:

输入数据第一行有1 个正整数n,0<n<27,表示给定的立方体个数和颜色数均为n。第2 行是n 个大写英文字母组成的字符串。该字符串的第k(0≤k<n)个字符代表第k种颜色。接下来的n行中,每行有6个数,表示立方体各面的颜色。立方体各面的编号如下图所示。

图中F表示前面,B表示背面,L表示左面,R表示右面,T表示顶面,D 表示底面。相应地,2 表示前面,3 表示背面,0 表示左面,1 表示右面,5 表示顶面,4 表示底面。

例如,在示例输出文件中,第3 行的6 个数0 2 1 3 0 0分别表示第1 个立方体的左面的颜色为R, 右面的颜色为B, 前面的颜色为G, 背面的颜色为Y, 底面的颜色为R, 顶面的颜色为R。

输出格式:

将计算出的n 个立方体的一种可行的叠置方案输出。每行6 个字符,表示立方体各面的颜色。如果不存在所要求的叠置方案,输出“No solution!”。

输入样例 复制
4
RGBY
0 2 1 3 0 0
3 0 2 1 0 1
2 1 0 2 1 3
1 3 3 0 2 2
输出样例 复制
RBGYRR
YRBGRG
BGRBGY
GYYRBB

说明

0
8
通过提交
时空限制1000ms/128mb
题目来源
评测方式在线评测
题目类型
难        度