康拓展开和逆康拓展开
-
康托展开
代码:
//康拓展开
//给定一个字符串,按照字典序排序,算出这个字符串在哪个位置,注意此处排列从0开始ll fac[21]; //到20的阶乘表,一般开longlongll cantor(char str[])
{int len=strlen(str);ll ans=0;for(int i=0;i<len;i++){ll tmp=0;for(int j=i+1;j<len;j++){if(str[j]<str[i])tmp++;}ans+=tmp*fac[len-i-1];}return ans;
}
逆康拓展开:
//逆康拓展开
//给定n个元素的全排列,求第m大的全排列数是多少
//这里假设全排列还是从0开始排序int ans[20]; //保存结果
ll fac[20]; //到20的阶乘表void reverse_cantor(int n,int m)
{m--; //因为康拓展卡是从0开始,而实际问题是从1开始,所以要--,若实际也从0开始,则不用减int vis[20]={0}; //保存某个数被访问没for(int i=n-1;i>=0;i--){int tmp=m/fac[i];int k=m%fac[i];int cnt=0,j;for(j=1;j<=n;j++){if(vis[j]==0)cnt++;if(cnt==tmp+1) //第tmp+1小的数即为当前位break;}ans[i]=j;m=k;vis[j]=1;}
}
康拓展开和逆康拓展开相关推荐
- 康拓展开与逆康拓展开
康托展开与逆康托展开 康托展开据我所理解,应该便是给你一个已知的排列,然后这个排列在全排列中是第几小或者第几大的,一般都是按字典序计算,即为第几小的.康托展开的公式为:X=a[n]*(n-1)!+ ...
- 康托展开和逆康托展开
简述 康托展开是一个全排列到一个自然数的双射,常用于构建hash表时的空间压缩.设有n个数(1,2,3,4,-,n),可以有组成不同(n!种)的排列组合,康托展开表示的就是是当前排列组合在n个不同元素 ...
- 康拓展开即逆康拓展开(简单易懂版)
康拓展开 当我们去搜康托展开这个关键字的时候,映入眼帘的是下面的一大堆公式: 其中X为康拓展开值 为整数,且 且表示袁数在当前未出现的元素是排第几个. 很不错,这样一下子会把人弄得搞陀不清(湖南方言) ...
- 康托展开与逆康托展开(bzoj 3301: [USACO2011 Feb] Cow Line)
康拓展开: 已知序列a1, a2, a3, -, an是1~n的一个排列,求这是1~n全排列中,第几小的排列? ans = ,其中F(i)表示后面n-i个数中比当前小的数的个数 例如 n = 5,序列 ...
- 康托展开与逆康托展开详解
文章目录 康拓展开 运用 板子 逆康托展开 板子 康拓展开 康托展开是一个全排列到一个自然数的双射,常用于构建哈希表时的空间压缩. 康托展开的实质是计算当前排列在所有由小到大全排列中的名次,因此是可逆 ...
- 数论--康托展开与逆康托展开模板
ACM常用模板合集 #include<bits/stdc++.h>using namespace std; const int MAX = 13; int Fac[MAX],N; //求出 ...
- 数学--数论--康托展开与逆康托展开
康托展开 可以理解为把一个全排列映射到一个数上面,因为全排列如果按照从小到大或者从大到小,肯定是有一个确定的序列的. 一般是从小到大的序列个数.我们就是要求出这个序列的位置.,想法很简答,就是求出前面 ...
- 基本算法——康托展开与逆康托展开
含义 康托展开是一个全排列到一个自然数的双射,常用于构建哈希表时的空间压缩. 康托展开的实质是计算当前排列在所有由小到大全排列中的顺序,因此是可逆的. 原理 X = s1(n-1)! + s2(n-2 ...
- 详解康托展开与逆康托展开
康托展开 rank=an(n−1)!+an−1(n−2)!+⋯+a10! 再举个例子说明. 在(1,2,3,4,5)5个数的排列组合中,计算 34152的康托展开值. 首位是3,则小于3的数有两个,为 ...
最新文章
- 利用nofllow与内页链接做好SEO
- Atitit apache 和guava的反射工具
- 《OKR源于英特尔和谷歌的目标管理利器》读书笔记
- NHibernate教程2(转载)
- MSP430程序跑飞原因
- .NET 开源免费图表组件库,Winform,WPF 通用
- STTN、DSTT、FuseFormer总结(它们改进了什么?)
- TensorFlow 学习指南 二、线性模型
- 基于原生js的图片延迟加载
- Oracle脚本(三)
- java 各种数据结构,几种常见的数据结构的JAVA实现
- 计算机网络毕业论文格式模板范文,计算机网络论文范文 计算机网络方面有关毕业论文的格式范文2万字...
- 微信小程序连续签到获得积分
- Android WebView实现长截图
- Git命令提交项目代码
- Linux:获取线程的PID(TID、LWP)的几种方式
- Python爬虫笔记————抓取 猫眼电影排行榜Top100
- Matlab常用函数集锦
- 靠谱的HEVC方案-软编解码器
- MySQL主外键表关联表数据的同时删除
热门文章
- 从左到右的流水灯单片机课程设计实验报告c语言版,流水灯_单片机课程设计-实验-LED流水灯.doc...
- AI算法工程师岗位职责解析
- 港科夜闻|香港科大学生获颁第一届香港-法国社区创新奖项
- 国产手机干不过苹果,无奈大举降价抛货,降价超千元的比比皆是
- js大小转换,字节转换成K、M、G、T 单位
- vue的[__ob__: Observer]
- JOS Lab3 User Environment Part B
- python pygame小游戏_python:利用pygame实现消消乐小游戏
- [DASCTF-Sept-X] 双目失明,身残志坚
- ArcMap在地图上绘画点要素以及画线要素详细步骤