[字节跳动编程题]雀魂启动!

1. 输入描述

总共有36张牌,每张牌是1-9。每个数字4张牌。输入只有一行,包含13个代表着13张牌的数字,用空格分隔,每个数字在1~9之间,数据保证同种数字最多出现4次。

2. 输出描述

输出同样是一行,包含1个或以上的数字。代表他再取到哪些牌可以和牌。若满足条件的有多种牌,请按从小到大的顺序输出。若没有满足条件的牌,请输出一个数字0,其中和牌的条件如下:

  • 14张牌中有2张相同数字的牌,称为雀头。
  • 除去上述2张牌,剩下12张牌可以组成4个顺子或刻子。顺子的意思是递增的连续3个数字牌(例如234,567等),刻子的意思是相同数字的3个数字牌(例如111,777)

3. 思路描述

从1到9九个数字进行遍历,判断当前已有的十三张牌中当前数字的牌是否已有四张,若没有则加入并且判断是否能满足条件,和了就将当前数字加入最终答案中并尝试下一个数字,若当前数字已有四张则跳过并尝试下一个数字。

而判断是否能满足条件的方法通过回溯法来实现,思路如下图:

你可能感兴趣的:([字节跳动编程题]雀魂启动!)