日期:2014-05-20  浏览次数:20823 次

关于六面体摆放的问题
有4个彩色的立方体。立方体的6个面,每面都涂上了1种颜色。一共有4种颜色,蓝色(B),红色(R),绿色

(G)和黄色(Y)。立方体的6个面称为前(front)、后(back)、左(left)、右(right)、上(top)、下(bottom)



 

这4个立方体的颜色排列为:

编号 front back left right top bottom

 1 R B G Y B Y

 2 R G G Y B B

 3 Y B R G Y R

 4 Y G B R R R

 

请将这4个立方体重叠摆放成为一个立柱,这个立柱有4个侧面,要求每个侧面都有4种颜色。

用Java语言实现,算出有多少种摆放方式。

小弟想的是用4个hashmap分别代表4个六面体,key--前后左右上下的位置,value--每个面的颜色。具体的方法不知道怎么写,关键是用什么来存储摆放后的立柱体。请各位打下赐教!!!

------解决方案--------------------
F=[‘frbl’; ‘lbrfl’; ‘trol’; ‘lort’; ‘tfob’; ‘boft’;];
A=[‘RYBG’; ‘GBYR’; ‘BYYG’; ‘GYYB’; ‘BRYB’; ‘BYRB’;];
B=[‘RYGG’; ‘GGYR’; ‘BYYG’; ‘GBYB’; ‘BRBG’; ‘GBRB’;];
C=[‘ YGBR’; ‘RBGY’; ‘YGRR’; ‘RRGY’; ‘YYRB’; ‘BRYY’;];
D=[‘YRGB’; ‘BGRY’; ‘RRRB’; ‘BRRR’; ‘RYRG’; ‘GRYR’;];
S=zeros(4,4);
C1r=zeros(4,4);
m=0;
function[row s]=r(A,F,i,j)
if j = = 1
sor = 1:4;
end
if j = = 2
sor =[2 3 4 1];
end
if j = = 3
sor =[3 4 1 2];
end
if j = = 4
sor =[4 1 2 3];
end
for n=1:4
s(1,n)=F(i,sor(n));
end
function row =ro(A,sor,i)
for n= 1:4
row(1,n)=A(I,sor(n));
end
S=zeros(4,4);
C1r=zeros(4,4);
m=0;
for Ra=1:6
s(1,:)=F(Ra,:);
C1r(1,:)= F(Ra,:);
for Rb=1:6
for Bj=1:4
sor=r(Rb, Bj);
row= ro(B,sor, Rb);
sort=s(F,sor, Rb);
s(2,:)=sort;
C1r(2,:)row;
for Rc=1:6
for Cj=1:4
sor=r(Rr, Cj);
row= ro(C,sor, Rc);
sort=s(F,sor, Rc);
s(3,:)=sort;
C1r(3,:)row;
for Rd=1:6
for Dj=1:4
sor=r(Rd, Dj);
row= ro(D,sor, Rd);
sort=s(F,sor, Rd);
s(4,:)=sort;
C1r(4,:)row;
if wom(C1r)= =308
m=m+1
S=char(s)
C1[‘YRGB’; ‘BGRY’; ‘RRRB’; ‘BRRR’; ‘RYRG’; ‘GRYR’;];