時限:1000ms 記憶體限制:10000k 總時限:3000ms
描述魔方大家應該都玩過。現在有乙個特殊的二階魔方,它只有一面是白色,其餘五個面全是黑色。玩這個魔方當然也有特殊的規則,玩家只能通過六種方式去改變它,底層向左轉一格(稱為dl),底層向右轉一格(稱為dr),右側向上轉一格(稱為ru),右側向下轉一格(稱為rd),內側順時針轉一格(稱為c),內側逆時針轉一格(稱為cc)。現給一魔方的狀態,請在最少的步驟內把魔方還原
輸入按照上下左右前後的順序給出各面的具體情況,0表示白色,1表示黑色。上下、左右、前後分別是以俯檢視、左檢視、正檢視看到的
輸出輸出令一面全為白色的最小步數。
輸入樣例
0000
1111
1111
1111
1111
1111
輸出樣例
#include#include#includeusing namespace std;
int num[12],bai[4],ba[4],num3=0;
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)
} }
}
NOJ 1325 特殊的二階魔方
時限 1000ms 記憶體限制 10000k 總時限 3000ms 魔方大家應該都玩過。現在有乙個特殊的二階魔方,它只有一面是白色,其餘五個面全是黑色。玩這個魔方當然也有特殊的規則,玩家只能通過六種方式去改變它,底層向左轉一格 稱為dl 底層向右轉一格 稱為dr 右側向上轉一格 稱為ru 右側向下轉...
Pocket Cube二階魔方
hdu5983的一道題,看錯了輸入,看了題解發現用一位陣列存比較方便。開兩個24的陣列存完直接暴力交換就完事了,搞了兩個小時,才發現這麼簡單,真是自閉魔方。include using namespace std int a 30 b 30 int isok return1 void cpy intm...
二階魔方萬能還原公式 二階魔方復原玩法
二階魔方的玩法分為三個步驟,分別是 1 還原底層角塊 2 還原頂面顏色 3 調整頂層角塊,每步結束後分別要達到下圖中的各個狀態。為了更好的說明,圖中灰色部分代表了該步驟中不相關的顏色,只用看標彩色的方塊就行了。第一步 還原底層角塊 這一步我們要將底層的4個角塊都復原,非常簡單,只需要記乙個演算法就好...