标签:count __ 13 杯牌 递归 res dfs 蓝桥 step
1. 问题描述:
小明被劫持到X赌城,被迫与其他3人玩牌。 一副扑克牌(去掉大小王牌,共52张),均匀发给4个人,每个人13张。 这时,小明脑子里突然冒出一个问题: 如果不考虑花色,只考虑点数,也不考虑自己得到的牌的先后顺序 自己手里能拿到的初始牌型组合一共有多少种呢?
输出
请输出该整数,不要输出任何多余的内容或说明文字。
来源:http://oj.ecustacm.cn/problem.php?id=1253
2. 思路分析:
分析题目可以知道这道题目其实一个排列组合问题,需要尝试所有排列组合方案的可能性,根据这个特点我们可以使用递归解决(递归可以搜索的可能性),但是这道题目有一个限制条件是只考虑点数,不考虑牌的顺序,所以在求解的时候不能够像求解全排列那样对于不同的排序方式计算为不同的方案,其实这道题目可以转换为求解每一个数字出现的次数就可以避免牌的出现顺序的问题,有的时候换一种思考问题的方式可能会使问题的处理变得简单一点
3. 代码如下:
res = 0
# 第一个count参数用来计算当目前为止出现了多少张牌了, 第二个step参数是为了控制走的步数, 因为牌的种类是13所以步数最多在13次
def dfs(count: int, step: int):
global res
if count > 13 or step > 13: return
if count == 13:
res += 1
return
for i in range(5):
dfs(count + i, step + 1)
if __name__ == '__main__':
dfs(0, 0)
print(res)
标签:count,__,13,杯牌,递归,res,dfs,蓝桥,step 来源: https://blog.csdn.net/qq_39445165/article/details/115504940
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。