具体学习参考https://blog.csdn.net/lttree/article/details/24798653

康拓展开:

int  fac[] = {1,1,2,6,24,120,720,5040,40320}; //i的阶乘为fac[i]
// 康托展开-> 表示数字a是 a的全排列中从小到大排,排第几
// n表示1~n个数  a数组表示数字。
int kangtuo(int n,char a[])
{int i,j,t,sum;sum=0;for( i=0; i<n ;++i){t=0;for(j=i+1;j<n;++j)if( a[i]>a[j] )++t;sum+=t*fac[n-i-1];}return sum+1;
}

逆康拓展开:

int  fac[] = {1,1,2,6,24,120,720,5040,40320};
//康托展开的逆运算,{1...n}的全排列,中的第k个数为s[]
void reverse_kangtuo(int n,int k,char s[])
{int i, j, t, vst[8]={0};--k;for (i=0; i<n; i++){t = k/fac[n-i-1];for (j=1; j<=n; j++)if (!vst[j]){if (t == 0) break;--t;}s[i] = '0'+j;vst[j] = 1;k %= fac[n-i-1];}
}

【模板】康拓展开+逆康拓展开相关推荐

  1. 【康拓展开逆康托展开】

    百度百科就够了 自己的体会: 康托展开是基于比他小的前面的个数来进行计算的        另外康托展开也是一个数组到一个数的映射,因此也是可用于hash,用于空间压缩.比如在保存一个序列,我们可能需要 ...

  2. 康拓展开 逆康拓展开

    题目:给出n个互不相同的字符, 并给定它们的相对大小顺序,这样n个字符的所有排列也会有一个顺序.?现在任给一个排列,求出在它后面的第i个排列.这是一个典型的康拓展开应用,首先我们先阐述一下什么是康拓展 ...

  3. 康拓展开即逆康拓展开(简单易懂版)

    康拓展开 当我们去搜康托展开这个关键字的时候,映入眼帘的是下面的一大堆公式: 其中X为康拓展开值 为整数,且 且表示袁数在当前未出现的元素是排第几个. 很不错,这样一下子会把人弄得搞陀不清(湖南方言) ...

  4. 康拓展开和逆康拓展开

    康托展开 公式:X=a[n]*(n-1)!+a[n-1]*(n-2)!+...+a[i]*(i-1)!+...+a[1]*0! ,其中a[i]为当前未出现的元素中(即后面的所有元素中)是排在第几个(从 ...

  5. 康拓展开与逆康拓展开

    康托展开与逆康托展开   康托展开据我所理解,应该便是给你一个已知的排列,然后这个排列在全排列中是第几小或者第几大的,一般都是按字典序计算,即为第几小的.康托展开的公式为:X=a[n]*(n-1)!+ ...

  6. 数论--康托展开与逆康托展开模板

    ACM常用模板合集 #include<bits/stdc++.h>using namespace std; const int MAX = 13; int Fac[MAX],N; //求出 ...

  7. 康托展开与逆康托展开(bzoj 3301: [USACO2011 Feb] Cow Line)

    康拓展开: 已知序列a1, a2, a3, -, an是1~n的一个排列,求这是1~n全排列中,第几小的排列? ans = ,其中F(i)表示后面n-i个数中比当前小的数的个数 例如 n = 5,序列 ...

  8. 康托展开与逆康托展开详解

    文章目录 康拓展开 运用 板子 逆康托展开 板子 康拓展开 康托展开是一个全排列到一个自然数的双射,常用于构建哈希表时的空间压缩. 康托展开的实质是计算当前排列在所有由小到大全排列中的名次,因此是可逆 ...

  9. 数学--数论--康托展开与逆康托展开

    康托展开 可以理解为把一个全排列映射到一个数上面,因为全排列如果按照从小到大或者从大到小,肯定是有一个确定的序列的. 一般是从小到大的序列个数.我们就是要求出这个序列的位置.,想法很简答,就是求出前面 ...

最新文章

  1. asp.net select Case条件语句的使用方法
  2. java十分钟速懂知识点——引用
  3. 使用手势,让键盘在点击空白处消失
  4. linux fish,LINUX命令fishshell-系统管理-比bash更好用的shell
  5. 北京内推 | 微软亚洲互联网工程院招聘NLP方向研究实习生(可远程)
  6. linux vi 命令大全
  7. 学习strut时遇到的问题 - Unable to compile class for JSP 错误的解决过程。
  8. 给服务器端下拉asp:DropDownList 绑定改变事件,Ajax绑定下拉
  9. 逆向生成的Dimac.JMail工程及测试项目
  10. Session赋值(备注)
  11. 通过java程序实现mysql 批量一个表的子段更新另一个表的字段
  12. 转帖-win2003各版本的区别
  13. 【VS2010学习笔记】【异常处理】general error c1010070: Failed to load and parse the manifest.
  14. 由杭州恶性撞人事件想到的
  15. 引用阿里图标库的三种方式——多色图标我选symbol
  16. 高仿京东分类效果(Scroll+Fragment)
  17. go获取当前工作路径
  18. 关于微信小程序如何使用Vant组件
  19. 乡愁 - 怀念老者余光中
  20. 宏源药业上市破发:跌幅16% 公司市值168亿超募17亿

热门文章

  1. 51单片机--某系统有K1和K2,一个数码管,当按下K1数码管加1,按下K2数码管减1
  2. 微信小程序组件(车牌号输入,支付键盘,滑块验证)
  3. PowerBuilder 10.5 安装卡住,界面显示不出来的解决过程
  4. 家用洗地机怎么选?性价比高的洗地机推荐
  5. 一起种树解锁蚂蚁森林高级皮肤
  6. 检测苹果推送证书有效性
  7. 【Mr幺幺肆】Nero Burning ROM刻录时报错could not perform start of disc-at-once的解决方法
  8. 树莓派3B+ubuntu系统串口调试
  9. UI基础入门-综合案例-02
  10. java计算机毕业设计基于springboot小区物业管理系统