1249表示什么生肖?

窦月彤窦月彤最佳答案最佳答案

1249的排列组合是1,2,3,4,5,6,7,8,9,10,11,12这十二个数,每个数字出现一次且只有出现一次的数列为组合,这样的数列有252组。其中包含6个重复的数字; 那么这些数字可组成多少组不重复的排布呢?答案是6×6=36种 而1-12中除了10和11外其他每两个数字都互不相同(因为如果其中一个出现了另一个就一定不会再次出现) 所以这些数的排列可以看成把6个数放入36个空格中的排列,共有36^6种情况 而每组情况中10和11肯定会出现而且只会出现一个,我们现在要做的就是避免重复的情况即当某个数在第i位时,第i+1位一定不要是它本身或者其循环反序(因为如果它是循环的话,它的逆序也是循环,我们只需要考虑前面已经出现的数就不会再出现该循环里的数了)

因此只要保证每个循环内只出现过两次,且每个循环里只放一个数字就可以了。显然10和11正好构成了这样两个循环所以只要我们在10和11之间插入5个数使得每一个循环仅出现1次即可。 但是这样会有问题,因为10和11之后的那串数字会和之前的那串产生重复!比如1、2和3在第一个循环出现了3次那么在第四位就会出现9。这是我们不希望的,因为9之前我们已经使用过了。

为了避免这种情况我们需要在3和4之间插更多的数来确保每一遍循环只能用过2个数字。具体需要多少个取决于剩下的数字(也就是12-10)是多少,我们让它们在每一层循环都能均匀的使用(对于每一对循环它们使用的次数应该一样多)。

一共有36/2=18种不同的结果,每种结果里每一个数字的出现次数都是一样的。也就是说我们把1~12这12个数字平均分成18份,每份包含了1,2,3,……,8,9,10这6个数字。然后从每份数字里各取一组成新的序列这样就避免了所有重复的现象发生了。

综上所述1249表示的生肖是虎,它在第十二个位置,第四个循环,第二个数字,也就是第十位数是5,第九位数是1,第八位数是3,第七位数是7,第六位数是2,第五位数是6,第四轮的第二位 以上计算比较麻烦可以通过编程实现。我这里用python编写了一个程序并且通过leetcode测试了它的正确性。

我来回答
请发表正能量的言论,文明评论!