特殊的二街魔方

2021-08-11 03:24:41 字數 3260 閱讀 3800

描述:

魔方大家應該都玩過。現在有乙個特殊的二階魔方,它只有一面是白色,其餘五個面全是黑色。玩這個魔方當然也有特殊的規則,玩家只能通過六種方式去改變它,底層向左轉一格(稱為dl),底層向右轉一格(稱為dr),右側向上轉一格(稱為ru),右側向下轉一格(稱為rd),內側順時針轉一格(稱為c),內側逆時針轉一格(稱為cc)。現給一魔方的狀態,請在最少的步驟內把魔方還原

輸入:

按照上下左右前後的順序給出各面的具體情況,0表示白色,1表示黑色。上下、左右、前後分別是以俯檢視、左檢視、正檢視看到的

輸出:

輸出令一面全為白色的最小步數。

輸入樣例:

00

0011

1111

1111

1111

1111

11

輸出樣例:

0

#include

#include

#include

using namespace std;

int num[12],bai[4],ba[4],num3=0;  

//四個佇列用來存放四個白塊的位置,按上下左右前後的順序對白塊標號。共24個編號.

queueq1;

queueq2;

queueq3;

queueq4;

void readdata();

void init();

int bfs();

int moveto(int n);

int main()

}void init()

if(num[i]==10)

if(num[i]==1)

}//將白塊放入佇列。

q1.push(bai[0]);

q2.push(bai[1]);

q3.push(bai[2]);

q4.push(bai[3]); }

int bfs()

for(j=0; j<4; j++)

for(j=1; j<22; j=j+4)

} q1.push(ba[0]);

q2.push(ba[1]);

q3.push(ba[2]);

q4.push(ba[3]); }

} }int moveto(int n)

else if(bai[i]==6)

else if(bai[i]==7)

else if(bai[i]==8)

else if(bai[i]==19)

else if(bai[i]==20)

else if(bai[i]==11)

else if(bai[i]==12)

else if(bai[i]==24)

else if(bai[i]==23)

else if(bai[i]==16)

else if(bai[i]==15)

} }

if(n==1)

else if(bai[i]==6)

else if(bai[i]==7)

else if(bai[i]==8)

else if(bai[i]==19)

else if(bai[i]==20)

else if(bai[i]==16)

else if(bai[i]==15)

else if(bai[i]==24)

else if(bai[i]==23)

else if(bai[i]==11)

else if(bai[i]==12)

} }

if(n==2)

else if(bai[i]==14)

else if(bai[i]==15)

else if(bai[i]==16)

else if(bai[i]==2)

else if(bai[i]==4)

else if(bai[i]==24)

else if(bai[i]==22)

else if(bai[i]==8)

else if(bai[i]==6)

else if(bai[i]==18)

else if(bai[i]==20)

} }

if(n==3)

else if(bai[i]==14)

else if(bai[i]==15)

else if(bai[i]==16)

else if(bai[i]==2)

else if(bai[i]==4)

else if(bai[i]==18)

else if(bai[i]==20)

else if(bai[i]==8)

else if(bai[i]==6)

else if(bai[i]==24)

else if(bai[i]==22)

} }

if(n==4)

else if(bai[i]==18)

else if(bai[i]==19)

else if(bai[i]==20)

else if(bai[i]==3)

else if(bai[i]==4)

else if(bai[i]==14)

else if(bai[i]==16)

else if(bai[i]==8)

else if(bai[i]==7)

else if(bai[i]==12)

else if(bai[i]==10)

} }

if(n==5)

else if(bai[i]==18)

else if(bai[i]==19)

else if(bai[i]==20)

else if(bai[i]==3)

else if(bai[i]==4)

else if(bai[i]==12)

else if(bai[i]==10)

else if(bai[i]==8)

else if(bai[i]==7)

else if(bai[i]==14)

else if(bai[i]==16)

} }

}

特殊的二階魔方

時限 1000ms 記憶體限制 10000k 總時限 3000ms 描述魔方大家應該都玩過。現在有乙個特殊的二階魔方,它只有一面是白色,其餘五個面全是黑色。玩這個魔方當然也有特殊的規則,玩家只能通過六種方式去改變它,底層向左轉一格 稱為dl 底層向右轉一格 稱為dr 右側向上轉一格 稱為ru 右側向...

NOJ 1325 特殊的二階魔方

時限 1000ms 記憶體限制 10000k 總時限 3000ms 魔方大家應該都玩過。現在有乙個特殊的二階魔方,它只有一面是白色,其餘五個面全是黑色。玩這個魔方當然也有特殊的規則,玩家只能通過六種方式去改變它,底層向左轉一格 稱為dl 底層向右轉一格 稱為dr 右側向上轉一格 稱為ru 右側向下轉...

幾種特殊的二叉樹

二叉樹 有序樹,左右孩子不能顛倒 1 滿二叉樹 對於h層的結點有2 h 1個結點。葉子結點都集中在最下面一層,除了葉子結點,每個結點都有左右孩子。2 完全二叉樹 對於乙個高為h有n個結點的二叉樹,當且僅當每乙個結點都與高度為h的滿二叉樹中編號為1 n的結點一一對應。葉子結點集中在最下面兩層,並且如果...