2020/05/31 ACE : 3/4 rank:322/3686
没有完全a完,早上的比赛没太睡醒,中间被罚了两次。比赛链接
还是重点讲解第四题吧,比赛时候没有a出来。
两个盒子中球的颜色数相同的概率
题目的翻译真的不是很好,是要求计算两个盒子里,a盒中颜色不同的球的种类和b盒中颜色不同的球的种类相同的概率。
一看就是排列组合题目,首先我们需要得到分母。可以考虑先作为完全不一样的球,计算全排列n!
,然后在依次进行捆绑,同一个种类的球是不存在区别的,因此可以随便换位置。需要除以每个种类的球的个数的阶乘。得到的就是分母。对于这一系列的计算,称为可重复的排列数。
然后是分子的计算,采用了枚举dfs的方法。按照球的种类进行搜索,每次对一种球进行划分,确定左侧放入几个球,右侧放入几个球。并且把左右盒子想象成了格子盒。这样在统计左右的不同类型球的时候会很方便。同时需要注意在dfs时保持入栈和退栈的协调。
class Solution:
def fact(self,n):
ans = 1
for i in range(1,n+1):
ans *= i
return ans