華為OD機(jī)試-整理撲克牌
題目描述:
給定一組數(shù)字,表示撲克牌的牌面數(shù)字,忽略撲克牌的花色,請按如下規(guī)則對這一組撲克牌進(jìn)行整理:
步驟1、對撲克牌進(jìn)行分組,形成組合牌,規(guī)則如下:當(dāng)牌面數(shù)字相同張數(shù)大于等于4時,組合牌為“炸彈”:3張相同牌面數(shù)字 + 2張相同牌面數(shù)字,且3張牌與2張牌不相同時,組合牌為“葫蘆”
3張相同牌面數(shù)字,組合牌為“三張”
2張相同牌面數(shù)字,組合牌為“對子”
剩余沒有相同的牌,則為“單張”:
步驟2、對上述組合牌進(jìn)行由大到小排列,規(guī)則如下:不同類型組合牌之間由大到小排列規(guī)則:“炸彈” >"葫蘆”>"三張”>"對子”> “單張”:相同類型組合牌之間,除“葫蘆”外,按組合牌全部牌面數(shù)字加總由大到小排列:"葫蘆”則先按3張相同牌面數(shù)字加總由大到小排列,3張相同牌面數(shù)字加總相同時,再按另外2張牌面數(shù)字加總由大到小排列;
由于“葫蘆”>“三張”,因此如果能形成更大的組合牌,也可以將“三張”拆分為2張和1張,其中的2張可以和其它“三張”重新組合成“葫蘆”,剩下的1張為“單張”
步驟3、當(dāng)存在多個可能組合方案時,按如下規(guī)則排序取最大的一個組合方案:依次對組合方案中的組合牌進(jìn)行大小比較,規(guī)則同上:當(dāng)組合方案A中的第n個組合牌大于組合方案B中的第n個組合牌時,組合方案A大于組合方案B;
輸入描述:
第一行為空格分隔的N個正整數(shù),每個整數(shù)取值范圍[1,13],N的取值范圍[1,1000]
輸出描述:
經(jīng)重新排列后的撲克牌數(shù)字列表,每個數(shù)字以空格分隔
————————————————
版權(quán)聲明:本文為CSDN博主「MISAYAONE」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明。
原文鏈接:https://renjie.blog.csdn.net/article/details/128422784
Java 實現(xiàn):https://renjie.blog.csdn.net/article/details/128422784
Python實現(xiàn):https://renjie.blog.csdn.net/article/details/128422870
C++ 實現(xiàn):https://renjie.blog.csdn.net/article/details/128422881
JavaScript實現(xiàn):https://renjie.blog.csdn.net/article/details/129214165
C語言版本持續(xù)更新中