HDU 5983 模擬魔方 模擬

2022-05-09 18:31:18 字數 1221 閱讀 2991

題意是說給定乙個 2*2 魔方的各個面的情況,問是否能轉動不超過一次使得魔方復原。

思路是先在輸入的時候統計一下已完成的面數,要想以最多一次的轉動使得魔方復原,那麼已完成的面數只能是 2 面或者 6 面,此處可剪枝。

若已完成 6 面,那麼一定可以復原;

若已完成 2 面,則要用一次轉動完成其他六面,開始這裡打算用結構體去存,結果在判斷的時候自己混亂了……最終直接定了 24 個變數,a,b,c……w,x,

手動做了個小正方體,太丟人……(但不得不說這種方法挺好的,易於理解,而且不會亂^_^)

**如下:

1 #include 2

using

namespace

std;

3int

a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x;

4bool xu[8];5

intmain()620

if(e==f&&f==g&&g==h)

2125

if(i==j&&j==k&&k==l)

2630

if(m==n&&n==o&&o==p)

3135

if(q==r&&r==s&&s==t)

3640

if(u==v&&v==w&&w==x)

4145

if(cnt==6) puts("

yes"

);46

else

if(cnt==2)47

58else

if(m==n&&m==r&&m==t)

5965}66

else

if(xu[1] && xu[3

])67

75else

if(a==b&&a==s&&a==t)

7682}83

else

if(xu[4] && xu[5

])84

92else

if(a==c&&a==f&&a==h)

9399

}100

if(wu) puts("

yes"

);101

else puts("no"

);102

}103

else puts("no"

);104

}105

return0;

106 }

view code

魔方 大模擬

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

東東轉魔方(模擬)

東東有乙個二階魔方,即2 2 2的乙個立方體組。立方體由八個角組成。魔方的每一塊都用三維座標 h,k,l 標記,其中h,k,l 六個面的每乙個都有四個小麵,每個小麵都有乙個正整數。對於每一步,東東可以選擇乙個特定的面,並把此面順時針或逆時針轉90度。請你判斷,是否東東可以在乙個步驟還原這個魔方 每個...

hdu 1998 奇數階魔方(找規律 模擬)

應該不算太水吧。17 24 1 8 15 23 5 7 14 16 4 6 13 20 22 10 12 19 21 3 11 18 25 2 9 對於上面的資料,根據題目中的提示,很容易就看到對角線上的數字是11 12 13 14 15。其他的資料,比如說2,從2往右上查就是2 3 4 5 1。描...