東東轉魔方(模擬)

2022-06-22 08:27:12 字數 2108 閱讀 1832

東東有乙個二階魔方,即2×2×2的乙個立方體組。立方體由八個角組成。

魔方的每一塊都用三維座標(h, k, l)標記,其中h, k, l∈。六個面的每乙個都有四個小麵,每個小麵都有乙個正整數。

對於每一步,東東可以選擇乙個特定的面,並把此面順時針或逆時針轉90度。

請你判斷,是否東東可以在乙個步驟還原這個魔方(每個面沒有異色)。

輸入的第一行包含乙個整數n(n≤30),這是測試用例的數量。

對於每個測試用例, 第 1~4 個數描述魔方的頂面,這是常見的2×2面,由(0,0,1),(0,1,1),(1,0,1),(1,1,1)標記。四個整數對應於上述部分。

第 5~8 個數描述前面,即(1,0,1),(1,1,1),(1,0,0),(1,1,0)的公共面。四個整數 與上述各部分相對應。

第 9~12 個數描述底面,即(1,0,0),(1,1,0),(0,0,0),(0,1,0)的公共面。四個整數與上述各部分相對應。

第 13~16 個數描述背面,即(0,0,0),(0,1,0),(0,0,1),(0,1),(0,1,1)的公共面。四個整數與上述各部分相對應。

第 17~20 個數描述左面,即(0,0,0),(0,0,1),(1,0,0),(1,0,1)的公共面。給出四個整數與上述各部分相對應。

第 21~24 個數描述了右面,即(0,1,1),(0,1,0),(1,1,1),(1,1,0)的公共面。給出四個整數與上述各部分相對應。

換句話說,每個測試用例包含24個整數a、b、c到x。你可以展開表面以獲得平面圖

如下所示。

+ - + - + - + - + - + - +

| q | r | a | b | u | v |

+ - + - + - + - + - + - +

| s | t | c | d | w | x |

+ - + - + - + - + - + - +

| e | f |

+ - + - +

| g | h |

+ - + - +

| i | j |

+ - + - +

| k | l |

+ - + - +

| m | n |

+ - + - +

| o | p |

+ - + - +

對於每個測試用例,魔方如果可以至多 "只轉一步" 恢復,輸出yes,則輸出no。

1 #include 2 #include 3 #include 4 #include 5

using

namespace

std;

6int a[100][100];7

int *u,*d,*f,*b,*l,*r;8//

int u[100],d[100],f[100],b[100],r[100],l[100];

9void

upshift()

1017

void

leftshift()

1826

void

frontshift()

2734

bool

judge()

3541

void

initial()

4249

intmain()

5056

57upshift();

58if(judge())

59upshift();upshift();

60if(judge())

61upshift();

6263

leftshift();

64if(judge())

65leftshift();leftshift();

66if(judge())

67leftshift();

6869

frontshift();

70if(judge())

71frontshift();frontshift();

72if(judge())

73frontshift();

74 cout<

<

76return0;

77 }

view code

week10限時模擬 東東轉魔方

陣列a 存放的是原魔方的情況 陣列b 存放的是旋轉之後魔方的情況。1 模擬旋轉的6種情況 找到乙個正方體,標上代表數字,分別模擬6中旋轉的情況,將結果存放到b 陣列裡面 2 判斷旋轉之後的魔方是否成功,即判斷陣列b的六個面是否每個面數字一樣。這是一道蠻暴力的題,只要正方體疊的好,沒有什麼是解決不了滴...

魔方 大模擬

魔方 cube.cpp 題目描述 給出乙個二階魔方,保證 n 步以內能夠還原。還原 被定義為每個面均為純色。請給出,操作編號字典序最小,且不存在同類操作相鄰,的還原方案。輸入格式 第一行乙個正整數n,表示最多步數。接下來24個整數,按上圖的順序依次給出ci,ci 輸出格式 一行,t個用空格隔開的正整...

HDU 5983 模擬魔方 模擬

題意是說給定乙個 2 2 魔方的各個面的情況,問是否能轉動不超過一次使得魔方復原。思路是先在輸入的時候統計一下已完成的面數,要想以最多一次的轉動使得魔方復原,那麼已完成的面數只能是 2 面或者 6 面,此處可剪枝。若已完成 6 面,那麼一定可以復原 若已完成 2 面,則要用一次轉動完成其他六面,開始...