超级无聊的组合问题

昨天在看王子囤教授写的算法一本书第二章的时候,看到一个地方说Threesum的brutal force解法是N chooses 3(N 是int的个数),也就是我们平时写的C(N/3)… <—- 土土的写法。

N chooses 3 写开了就是 N(N-1)(N-2)/2*3

突然想到说为什么N chooses 3 的分母是2*3呢?然后就一直想进去了…是笨蛋给自己出的睡前脑筋急转弯><,还特此来写个日记,有够笨诶

所以我的思考过程是这样的:

N chooses 2 打开是N*(N-1)/2, 这个看起来就不那么奇怪了有没有,原因就是第一个选择了N之后第二次只能选择N-1,并且会造成对称的重复(第一次选择A第二次选择B <> 第一次选择B第二次选择A),于是要减少一半。

想通了这个就简单很多呢,那么接下来多选一个会造成怎样的重复呢? 其实超傻的,就是在上面情况里的 AB的前、中、后各多一种重复的可能呀~

嗯更直白一点的说是这样:在已经选择了两个的基础上,多选一个C,那么他可能出现在A前面(CAB),出现在AB中间(ACB),以及B以后(ABC),那么也就是说,需要在N*(N-1)/2的基础上再多增加一项(N-3)/3, N-3便是多增加一个slot所带来的更多组合,而3就是多增加一个slot所带来的重复。

所以推而广之,N chooses 4的话,从3个增加到4个呢,也会增加四种重复的组合呢(DABC,ADBC,ABDC,ABCD)。是不是很直观!

如果需要排列的话,那么所有的可能都不是重复啦!也就什么都不用除,嗯。说完了。

Quote

一些话

我唯一的害怕,是你们已经不相信了:不相信规则能战胜潜规则,不相信学术不等于权术,不相信风骨远胜于媚骨。 你们或许不相信了,因为追求级别的越来越多,追求真理的越来越少;讲待遇的越来越多,讲理想的越来越少。 因此,在你们走向社会之际,我想说的只是,请看护好你曾经的激情和理想。在这个怀疑的时代,我们依然需要信仰。无论中国怎样,请记得:你所站立的地方,就是你的中国;你怎么样,中国便怎么样;你是什么,中国便是什么;你有光明,中国便不再黑暗。

人民日报评论部主任,卢新宁

Image

突然想到的一些。

 

@ San Jose

好像搬过来也有不长不短的三周了。中间经历了好多已知的, 未知的, 期待并实现的,以及没曾想到但确发生的。

我从来不是一个坚强的人,即使是内容寡淡的事情也可以在脑中翻来覆去愣是翻炒出千滋百味滚烫的冒泡的版本。从头到尾每个可能性都要完全的设想过,主线不曲折结局不劲爆都还不算完。 这种奇怪的“歪曲事实”强迫症实在是一种困扰。 Continue reading