特殊的二階魔方

2021-08-29 05:39:30 字數 2947 閱讀 9870

時限: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個角塊都復原,非常簡單,只需要記乙個演算法就好...