题解 P2007 【魔方】
这题主要是理解,经过分析后,我们可以把六个面分别表示为3*3的二维数组,并用1,2,3,4,5,6分别表示前、后、左、右、上、下,也就是一个6*3*3的三维数组。这样,得到以下四种模型:
操作1:
for i:=1 to 3 do
begin
b[1,i,3]:=a[6,i,3];
b[6,i,3]:=a[2,i,3];
b[2,i,3]:=a[5,i,3];
b[5,i,3]:=a[1,i,3];
end;
for i:=1 to 3 do
for j:=1 to 3 do
b[4,j,4-i]:=a[4,i,j];
其中a是转换前的,b是转换后的。下面的是一个意思。 操作2:
for i:=1 to 3 do
begin
b[1,i,3]:=a[5,i,3];
b[5,i,3]:=a[2,i,3];
b[2,i,3]:=a[6,i,3];
b[6,i,3]:=a[1,i,3];
end;
for i:=1 to 3 do
for j:=1 to 3 do
b[4,4-j,i]:=a[4,i,j];
操作3:
for i:=1 to 3 do
begin
b[1,1,i]:=a[3,1,i];
b[3,1,i]:=a[2,1,i];
b[2,1,i]:=a[4,1,i];
b[4,1,i]:=a[1,1,i];
end;
for i:=1 to 3 do
for j:=1 to 3 do
b[5,j,4-i]:=a[5,i,j];
操作4:
for i:=1 to 3 do
begin
b[1,1,i]:=a[4,1,i];
b[4,1,i]:=a[2,1,i];
b[2,1,i]:=a[3,1,i];
b[3,1,i]:=a[1,1,i];
end;
for i:=1 to 3 do
for j:=1 to 3 do
b[5,4-j,i]:=a[5,i,j];
当然,自己手边有个魔方的话,很容易发现这个规律,没有的话也可以看样例自己找。