通過最大化有三個項目的行數,可以最大限度地減少行的總數。因此,六個項目將被歸爲3兩行,而不是三排2:
[1][2][3]
[4][5][6]
和十個項目將被分組爲2兩行和3而不是5行2的兩行:
[ 1 ][ 2 ]
[ 3 ][ 4 ]
[5][6][7 ]
[8][9][10]
如果您想要先將兩個物品放在一起,那麼您會一直剝下兩個物品,直到其餘物品可以被3整除。當您循環使用時,您需要跟蹤剩餘物品的數量索引或什麼。
在你的循環來填充每一行,您可以檢查這些條件:
//logic within loop iteration
if (remaining % 3 == 0) //take remaining in threes; break the loop
else if (remaining >= 4) //take two items, leaving two or more remaining
else //take remaining items, which will be two or three; break the loop
如果我們通過的10項例如行走,過程會去如下:
- 10個項目剩餘。 10%3!= 0。由於10> 4,請分兩項。
- 剩餘8件商品。 8%3!= 0.由於8> 4,需要兩個項目。
- 剩餘6件商品。 6%3 = 0.將這6個項目分成三組。
要轉到你的7個項目例如:
- 7個項目剩餘。 7%3!= 0。由於7> 4,請分兩項。
- 剩餘5件商品。 5%3!= 0.由於5> 4,需要兩個項目。
- 剩餘3件商品。 3%3 = 0。將這3項作爲一組。
而這裏的4項結果:
- 4項剩餘。 4%3!= 0。由於剩餘= 4,需要兩個項目。
- 剩餘2件商品。 2%3!= 0. 2 < 4.下降到其他狀態,取其餘項目。
我認爲這樣會起作用。至少在上午12點30分,它似乎應該起作用。
是最後一行完全填充的另一個標準嗎?否則,爲什麼這7個項目不是 1 2 3 \ n 4 5 6 \ n 7 – SimonC 2012-01-11 04:35:29
爲什麼不在每行中放3(mod 3一路下降),並將其餘的1或2在最後一行? – 2012-01-11 04:38:21
@SimonC:是的想法是沒有稀疏的行。 – Mark 2012-01-11 04:42:47