8張撲克牌問題

2021-10-19 02:46:25 字數 947 閱讀 6109

有8張撲克牌,兩張1,兩張2,兩張3,兩張4。現在需要排序成一排,要求每張牌號為1的牌中間間隔1張牌,每張牌號為2的牌間隔2張牌,每張牌號為3的牌間隔3張牌,每張牌號為4的牌間隔4張牌,請問有幾種放置方案?

例如如下排列不符合規範,因為位置6和位置7放置的兩張4中間沒有間隔4張牌。

位置1位置2

位置3位置4

位置5位置6

位置7位置812

1324

43該問題實際想問如何將8個數字進行排列,從而滿足特性的間隔要求。

問題輸入為8個數字,輸出為8個已經排序的陣列,操作環節只有排序。

觀點:只需按要求將前四個位置,按照牌的擺放要求填滿前4位,則如果8個位置都是滿的,則符合題目要求。

複雜度:第乙個位置可能性8,第二個位置可能性7,則遍歷方全部案需要8 * 7 * 6 * 5 ,複雜度為n!,典型np問題。類似於演算法中的tsp 旅行推銷商問題。

結論:放棄。

觀點:題目可以分解為如何放置4對牌可以填滿8個問題。即共有4個子問題:兩張1的放置,兩張2的放置……。類似於零錢兌換問題。

第一次選擇放置兩張4,因為4的確定性最高,後續選擇可能性也就越少,共有3種放置方案。

第二次放置兩張3,每種都是兩種放置方案。

選擇次數:3 * 2 * 2。

結論:41312432、23421314

模擬觀點:每對牌有固定間隔,類似於三維世界的體積;佔滿8個位置類似於填滿固定空間。那麼模擬於如何將雞蛋、大棗、沙子和水填滿玻璃瓶?

模擬方案解法:先放雞蛋,再放……。方案數量無窮多,因為我可以只旋轉杯子。

對應問題觀點:方案數量肯定為偶數,因為我可以旋轉陣列!即方案中4放在位置1和位置3其實沒有什麼不同。可以對方案進行剪枝。

選擇次數:2 * 2 + 2

結論:41312432、23421314

共有兩種放置方案。

感謝各位提供方案和觀點的同學,感謝聰明的妹妹。

撲克牌問題

ll今天心情特別好,因為他去買了一副撲克牌,發現裡面居然有2個大王,2個小王 一副牌原本是54張 他隨機從中抽出了5張牌,想測測自己的手氣,看看能不能抽到順子,如果抽到的話,他決定去買體育彩票,嘿嘿!紅心a,黑桃3,小王,大王,方片5 oh my god 不是順子.ll不高興了,他想了想,決定大 小...

撲克牌問題

撲克牌問題 手裡有13張牌,取第一張放到桌子上,再取一張放到手牌的最下面,重複操作,直到手裡沒牌。已知桌子上牌的順序,求手中原來牌的順序,並輸出到螢幕。int main for auto it hand cout endl 手上的牌到桌上 while hand.size 0 for auto it ...

撲克牌排序 趣味撲克牌

一提到撲克牌,我們就想到神秘的魔術表演,撲克牌上有很多形狀和數字,裡面蘊藏了很多數學知識哦!瞧 subway的小朋友們正在進行趣味撲克牌的遊戲呢!好多撲克牌啊!撲克牌中間怎麼是空的呢?哇,還有這麼小的撲克牌呢!一看到teacher手中的撲克牌,小傢伙們乙個個的都興奮起來,迫不及待想要分享自己的見解呢...