康拓展开 & 逆康拓展开
来源:互联网 发布:流程优化与再造 段磊 编辑:程序博客网 时间:2024/04/29 07:00
题目:给出n个互不相同的字符, 并给定它们的相对大小顺序,这样n个字符的所有排列也会有一个顺序.?现在任给一个排列,求出在它后面的第i个排列.这是一个典型的康拓展开应用,首先我们先阐述一下什么是康拓展开。
(1)康拓展开
所谓康拓展开是指把一个整数X展开成如下形式:
X=a[n]*(n-1)!+a[n-1]*(n-2)!+...+a[i]*(i-1)!+...+a[2]*1!+a[1]*0!。(其中,a为整数,并且0<=a[i]<i(1<=i<=n))
(2)应用实例
{1,2,3,4,...,n}表示1,2,3,...,n的排列如 {1,2,3} 按从小到大排列一共6个:123 132 213 231 312 321。他们间的对应关系可由康托展开来找到。
1324是{1,2,3,4}排列数中第几个大的数:
第一位是1小于1的数没有,是0个 0*3! ;
第二位是3小于3的数有1和2,但1已经在第一位了,即1未出现在前面的低位当中,所以只有一个数2 1*2! ;
第三位是2小于2的数是1,但1在第一位,即1未出现在前面的低位当中,所以有0个数 0*1! ;
所以比1324小的排列有0*3!+1*2!+0*1!=2个,1324是第三个大数。
代码实现:
- int kt(int s[],int n)//n表示该排列有n个数
- {
- int sum = 0;
- for(int i = 0; i < n; i++)
- {
- int temp = 0;
- for(int j = i + 1; j < n; j++)
- if(s[j] < s[i])
- temp ++;
- sum += f[n - 1 - i] * temp;//f[n]表示n的阶乘
- }
- return sum + 1;
- }
练习:http://acm.nyist.net/JudgeOnline/problem.php?pid=139
康托展开的逆运算:
{1,2,3,4,5}的全排列已经从小到大排序,要找出第16个数:
1. 首先用16-1得到15
2. 用15去除4! 得到0余15
3. 用15去除3! 得到2余3
4. 用3去除2! 得到1余1
5. 用1去除1! 得到1余0
有0个数比它小的数是1
所以第一位是1
有2个数比它小的数是3,但1已经在之前出现过了所以是4
有1个数比它小的数是2,但1已经在之前出现过了所以是3
有1个数比它小的数是2,但1,3,4都出现过了所以是5
最后一个数只能是2
所以这个数是14352
代码实现:
- void kt(int sum,int n)
- {
- int i, j, s[5];
- bool v[5]={0};
- sum--;
- for(i = 0;i < n; i++)
- {
- int t = sum / f[n - 1 - i];//f[n]表示n的阶乘
- for(j = 0; j < n; j++)
- {
- if(!v[j])
- {
- if(t == 0) break;
- t --;
- }
- }
- s[i] = j;
- v[j] = 1;
- sum %= f[n - 1 - i];
- }
- }
练习:http://acm.nyist.net/JudgeOnline/problem.php?pid=143
- 康拓展开 & 逆康拓展开
- 康拓展开&&逆康拓展开
- 康拓展开 & 逆康拓展开
- 逆康拓展开
- 康拓展开,康拓展开逆运算
- 康拓展开和(逆康拓展开)
- 康拓展开及逆康拓展开
- 康拓展开与逆康拓展开
- 康拓展开和逆康拓展开
- 逆康拓展开展开
- 康拓展开
- 康拓展开
- 康拓展开
- 康拓展开逆运算
- 康拓展开
- 康拓展开
- 康拓展开
- 康拓展开 Test
- android IBinder 解析
- 光伏发电协助提高数据中心(IDC)能源使用效率
- Linux运维 nginx
- Solr 5.4 + Tomcat 8.0 + Zookeeper 实现SolrCloud
- JNI学习三(基本使用)
- 康拓展开 & 逆康拓展开
- 将一个整数分解为一个或者多个素数的乘积
- 空间统计说历史:罗马七丘的空间分析(一)
- 拼接字符串的效率问题(String,StringBuffer,StringBuilder对比)
- ubuntu 安装Gearman php扩展
- Failed to issue method call: Unit mysql.service failed to load: No such file or directory的解决办法
- moodle服务器优化,linux服务器优化同理apache nginx tomcat php php-fpm loadruner ab nginx 虚拟目录
- iOS生成静态库方法-iOS集成静态库-iOS合并静态库
- 增多 cookie 安全性添加HttpOnly和secure属性