Re: [發案] 徵求程式設計高手 (有關排列組合)
我不會 matlib.
我高中的科學競賽內容(佳作)
正六角形的拼圖六色不重複.
正反面不重複共 60 塊.
中間留空, 從中間開始拼, 最多能拼幾塊?
6 色可以依序轉成 0 ~ 119 的數字(序號),
就很方便計算.
很明顯其中一種顏色固定位置為基準.
用順時針順序.
123456 = 0 (反面 119)
123465 = 1
123645 = 2
123654 = 3
...
165432 = 119
一看就知道序號大的數字也大,有對應關係.
我的程式可以從序號和數字之間互轉,方便計算.
計算的 magic number:
1 2 6 24
以 165432 為例
a. 2 3 4 5 6 (剩下的顏色,依序排列)
0 1 2 3 4 (順序值, 從零開始)
取 6, 4 * 24 = 96
b. 2 3 4 5
0 1 2 3
取 5, 3 * 6 = 18
c. 2 3 4
0 1 2
取 4, 2 * 2 = 4
d. 2 3
0 1
取 3, 1 * 1 = 1
96 + 18 + 4 + 1 = 119
此題類似:
原始問題和資料展開後如下:
共有 35 組
接案者可以找出從 "序號" 轉成 "數字" 的公式.
這個問題不難,只需找出規律,建好表格.
題目似乎只要依序 printf, 這是更容易完成的.
如果有 "序號 => 數字" 的公式, 就可以在中途停止,
只記錄一個序號的數值, 十分方便.
1 2 3 4 5 (資料的數字)
5 4 3 2 1 (依順序能包含多少數量)
倒序比較容易看出累積數量.
(15 組)
111 = 0 34
112 = 1 33
113 = 2 32
114 = 3 31
115 = 4 30
122 = 5 29
123 = 6 28
124 = 7 27
125 = 8 26
133 = 9 25
134 = 10 24
135 = 11 23
144 = 12 22
145 = 13 21
155 = 14 20
(10 組)
222 = 15 19
223 = 16 18
224 = 17 17
225 = 18 16
233 = 19 15
234 = 20 14
235 = 21 13
244 = 22 12
245 = 23 11
255 = 24 10
(6 組)
333 = 25 9
334 = 26 8
335 = 27 7
344 = 28 6
345 = 29 5
355 = 30 4
(3 組) k 組
444 = 31 3
445 = 32 2
455 = 33 1
(1 組)
555 = 34 0
雖然因為 n 、 k 的數值大而要使用 bignum library,
不過實際的難度不高.
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.22.98
推
10/19 21:44, , 1F
10/19 21:44, 1F
推
10/20 00:57, , 2F
10/20 00:57, 2F
→
10/20 01:00, , 3F
10/20 01:00, 3F
推
10/20 15:01, , 4F
10/20 15:01, 4F
討論串 (同標題文章)
完整討論串 (本文為第 3 之 4 篇):