2011-05-24 64 views
0

我正在編寫一個紙牌遊戲,我需要按照排名排列一堆卡。以便它們形成無間隙序列。 在這個特殊的遊戲價值2卡可作爲外卡,因此,例如卡用通配符排序卡

2 3 5 

應該這樣

3 2 5 

進行排序,因爲2代替4,否則它不會是一個有效的序列。然而,卡

2 3 4 

應該留像他們

限制:只有一個'2'用作通配符。

2 2 3 4 

也會保持原樣,因爲前2個會替換ACE(或1,無論您稱之爲什麼)。

以下內容不是有效的輸入序列,因爲其中一個必須用作通配符,而不能用作通配符。那麼無法構成無間隙序列。

2 4 2 6 

現在我很難弄清楚2是否被用作通配符。一旦我明白了,我想我可以做其他的排序

感謝任何有關此問題的算法幫助!

+2

如果你有卡片「2,2,4,6」,結果序列應該是「2,4,2,6」還是「4,2,6,2」? – 2011-05-24 14:41:52

+0

好問題!可以只有一個'2'用作通配符。所以這種情況首先不是一個有效的序列。我會相應地編輯我的問題。 – clamp 2011-05-24 14:48:03

+0

將遇到的第一個'2'改爲'0'(或其他不使用的字符),並將其用作通配符。然後在顯示之前將其轉換回「2」。 – 2011-05-24 15:10:18

回答

4

編輯迴應您對新要求的說明:
您意味着您將永遠無法獲取無法形成無間隙序列的數據。 (如果只有我可以在現實世界中有這樣的保證。)所以:

  • 你有2?
    • 否:您的序列必須已經無間隙。
    • 是的:你需要弄清楚把它放在哪裏。
  • 對輸入進行排序。你有沒有看到差距?由於您只能使用一個2作爲通配符,因此最多隻能有一個缺口。
    • 否:將2作爲合法的數字2處理。
    • 是:響應移動2到差距,以填補其在

編輯你的新需求:
在這種情況下,只要認準了最高的單差距,插頭它有一個2,如果你有一個2可用。

原來的答覆:
由於您的序列必須是無縫的,你可以指望你有2秒和所有所存在的差距的大小數量。然後填寫您有足夠數量2的最高差距。

+0

謝謝,讓我以正確的方式。我沒有提到這一點,但是你不能低於1,所以如果出現1(Ace),在兩個2的情況下也要確保將野生2移動到最後。例如:1 2 3 2 – clamp 2011-05-24 16:00:39