题目解析
本题数量级不大,可以考虑暴力破解。
首先定义一个数组card_count,数组索引就是牌分数,数组元素就是牌数量
因为本题中牌面是不连续的,比如0代表10,但是牌分数是连续的。
因此,将牌分数作为数组索引来看的话,就可以用一个长度为5的滑窗来在card_count中找顺子。
由于K牌面分数是13,因此我们只需要定义card_count数组长度为14即可,题目用例可得数组如下:
有了card_count之后,我们就可以开始遍历每一种牌(即遍历card_count数组的索引 i ):
- card_count[i] >= 1,则说明当前牌面 i 至少有1张,那么此时可以选择:
- 出单张,那么总牌数量 - 1,总分 + i
- 出顺子,但是需要先检查 i+1, i+2, i+3, i+4 牌的数量是否至少有1张,如果有的话,才可以出顺子,那么总牌数了 - 5,总分+ ( i + (i+1) + (i+2) + (i+3) + (i+4) ) * 2
- card_count[i] >= 2,则说明当前牌面 i 至少有2张,那么此时可以选择出对子,