一道离散数学的计算题

感受到被中学排列组合统治的恐惧。

题目如下:

小明有3颗红珊瑚,4颗白珊瑚,5颗黄玛瑙。
他想用它们串成一圈作为手链,送给女朋友。
现在小明想知道:如果考虑手链可以随意转动或翻转,一共可以有多少不同的组合样式呢?
请你提交该整数。不要填写任何多余的内容或说明性的文字。

数学计算坑比较多,尤其是翻转的对称问题,这里我们用暴力求解。比较暴力一点的做法就是直接把所有的可行的序列都统统塞到一个map里,然后逐个挪动位置进行检测;针对翻转的情况,就检查一下该序列的reverse(倒置)是否之前有过。稍微聪明一点的做法就是把s重复两遍进行存储,之后就不需要在循环移位成新的字符串了。

代码如下(主要得注意反转这个坑):

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注