康托展开

这又是放收藏里面的坑
具体解释,建议看百度百科,挺详细的----康托展开
再,个人理解:
就是分成展开值和展开逆运算:
展开值X是再给1~n个数的随机组合中,第X大的数,即再这个数前面还有X-1个数。
运算
数组:1 2 3 4 5
组合: 3 4 1 5 2
展开值:2 * 4 !+2 * 3!+0* 2!+1*1!+0 * 0!=61
该组合就排在第62位
其中,阶层第一个是(总个数-1)的阶层然后递减
然后乘号前面那个数:是该数对应位置那个数,在组合里面,在这个数后面比他小的数的个数
eg: 3后面比他小的是1,2;4后面小也是1,2…
在这里插入图片描述
换成公式就是这样。
再写一个展开逆运算:
n=5,x=96,求他的组合:
那么第一个数就是(96-1)/ 4!,得3余23,那么就代表在第一个数后面又3个比他小的数,所以第一个数是4,再用余数计算
第二个数:23 / 3! 得到3余5,说明有3个数比第2位小,可以是4,但是4已出现过,因此是5.
第三个数:用5 / 2!,得到2余1,这一位是3.
第四位数:用1 / 1!,得到1余0,这一位是2.
最后一位只能是1.
所以这个数是45321
(其实这里有个小小的疑问,那这个数可不可以是8 9 7 6 5,毕竟按照定义和他本身的值没有关系,只和个数位数有关,再不重复)

在这里插入图片描述
具体应用:(忘记再哪里了,找到了再补上来)
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值