美文网首页
康托展开

康托展开

作者: dachengquan | 来源:发表于2020-08-04 15:25 被阅读0次

康托展开用于求1~n任意排列的排名,排名是指按字典序排序后的排名。
举例对于2314来说,2前面只有1比他小,开头为1组成的排列组合一个有3!个,3前面有2和1比他小,但是2在前面出现过了,所以只有一个数比他小开头是21组成的全排列有2!个。1*3!+1*2!+0*1 = 8所以比2314小的有8个,2314是第9名。
逆康托展开
根据排名也能求出排列。
首先让9-1。
考虑第1位,\lfloor \frac {8} {3!} \rfloor = 1我们知道前面只有一个数比他小,因此第一位是2,让8-3!= 2。
考虑第2位,\lfloor \frac {2} {2!} \rfloor = 1我们知道前面只有一个数比他小,2被占用,因此我们只能使用3。
后面没有比他小的了,因此序列为2314。
康托展开和逆康托展开的时间复杂度都是O(n^2),康托展开中查询比a小的数有多少个,可以使用树状数组维护O(logn)的时间查询。

相关文章

  • 康托展开

    原博客 康托展开的公式是 X=an*(n-1)!+an-1*(n-2)!+...+ai*(i-1)!+......

  • 康托展开

    康托展开用于求1~n任意排列的排名,排名是指按字典序排序后的排名。举例对于2314来说,2前面只有1比他小,开头为...

  • 康托展开公式与全排列应用

    康托展开公式 怎样知道其中一种排列是有序序列中的第几个? 康托展开. {1...n}的全排列由小到大有序,s[]为...

  • 康托展开及其逆运算实现 C++

    康托展开 康托展开 求一个数在其全排列的次序 规定a[n]为 在第n位后面且比其数值小的数字个数与 (n-1)! ...

  • 小朋友学奥数(21):康托展开

    一、康托展开运算 把一个整数X展开成如下形式:X = an * (n - 1)! + an-1 * (n - 2)...

  • 简单排序——幸运数字(康托展开)

    时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 262144K,其他语言524288K 一、题目内容...

  • 数学的本质在于它的自由

    数学的本质在于它的自由——康托尔

  • 2018-07-01

    阿托钙片,骨疏康胶囊,钙片,别嘌呤

  • 2018-08-03

    带康康去看暑托班的地方,因为是第一次去,康康有些害羞和紧张,不愿意进去,在门口扭捏徘徊了好久。我也就陪着康康在门口...

  • 以疑为基,奠悟之旅

    “在数学的领域中,提出问题的艺术比解答问题的艺术更为重要。"――康托尔。数学家康托尔的这句话表明:在数学学...

网友评论

      本文标题:康托展开

      本文链接:https://www.haomeiwen.com/subject/amdwrktx.html