題意是說給定乙個 2*2 魔方的各個面的情況,問是否能轉動不超過一次使得魔方復原。
思路是先在輸入的時候統計一下已完成的面數,要想以最多一次的轉動使得魔方復原,那麼已完成的面數只能是 2 面或者 6 面,此處可剪枝。
若已完成 6 面,那麼一定可以復原;
若已完成 2 面,則要用一次轉動完成其他六面,開始這裡打算用結構體去存,結果在判斷的時候自己混亂了……最終直接定了 24 個變數,a,b,c……w,x,
手動做了個小正方體,太丟人……(但不得不說這種方法挺好的,易於理解,而且不會亂^_^)
**如下:
1 #include 2view codeusing
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 }
魔方 大模擬
魔方 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。描...