uva1352 排列組合

2021-06-28 10:21:12 字數 988 閱讀 1377

題意:

給你幾個正方體,每個正方體的六個面都塗有顏色,現在你要把這些正方體重新塗色,使得所有正方體都一樣(六個面顏色相同,正方體可以旋轉),問最少重塗幾個面;

思路:

首先,如果正方體不能旋轉,那麼要怎麼塗.很顯然,每一面都找出一樣的顏色最多的那個顏色,把其他的都塗成這個顏色,那麼就是最少的.

但是正方體可以旋轉,通過計算我們可以知道,每乙個正方體有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...