关于六面体摆放的问题
有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’;];