題意:
給你幾個正方體,每個正方體的六個面都塗有顏色,現在你要把這些正方體重新塗色,使得所有正方體都一樣(六個面顏色相同,正方體可以旋轉),問最少重塗幾個面;
思路:
首先,如果正方體不能旋轉,那麼要怎麼塗.很顯然,每一面都找出一樣的顏色最多的那個顏色,把其他的都塗成這個顏色,那麼就是最少的.
但是正方體可以旋轉,通過計算我們可以知道,每乙個正方體有24種旋轉方式,而這個道題正方體最多4個,而且第乙個不需要旋轉.那麼就是總共有24^3種可能性.
那麼我們把每種可能性都通過上面那種方法算出最少塗的面,找出最小值:
ac:
#include#include#includeusing namespace std;
const int n = 30;
const int inf = 0x3f3f3f3f;
const int dice[24][6] = , , , ,
, , , ,
, , , ,
, , , ,
, , , ,
, , , ,
};int n,cnt,ans,cube[n][n],turn[n];
char color[n][n];
int color_to_num(char* str)
strcpy(color[cnt] , str);
return cnt++;
}void judge()
sum += n - m;
} ans = min(sum , ans);
}void dfs(int cur)
for(turn[cur] = 0 ; turn[cur] < 24 ;turn[cur]++)
}int main()
} ans = inf;
dfs(1);
printf("%d\n",ans);
}}
Uva 580 排列組合
我發現數學還是很有用的 o 想了一節課才推出式子,數學競賽的一會就想出來了orz.要看排列組合的書了.推導過程有時間在寫估計不會了 code include include include include include include include define fo i,a,b for int...
uva 11174 排列組合 搜尋
依然是liurujia計數練習題。依然是自己想沒想出來,在mod是素數的情況下除以x即為乘x的逆。這個真心以前沒聽過,用了這個方法後處理就變得十分巧妙。整個程式步驟還是很清晰的,先上來算階乘與逆 求數的逆還是有點沒理解透,需要後續章節繼續學習 然後讀入建圖只能用鄰接表了,注意加上最開始的那個根節點就...
8 排列組合
1 2 permutations 3 排列組合 4 輸入abc,輸出所有可能的排列結果 5 輸入 abc 6 輸出 abc 7 acb 8 bac 9 bca 10 cab 11 cba 12 1314 include15 16using namespace std 1718 int c1 0 19...