描述:
魔方大家應該都玩過。現在有乙個特殊的二階魔方,它只有一面是白色,其餘五個面全是黑色。玩這個魔方當然也有特殊的規則,玩家只能通過六種方式去改變它,底層向左轉一格(稱為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的結點一一對應。葉子結點集中在最下面兩層,並且如果...