首页 > 其他分享 >笔记

笔记

时间:2023-05-05 09:59:07浏览次数:42  
标签:int 笔记 逆康托 Fac 排列组合 展开 康托

康托展开和逆康托展开

康托展开和逆康托展开(转) - Sky丨Star - 博客园 (cnblogs.com)

康托展开表示的就是是当前排列组合在n个不同元素的全排列中的名次

逆康托展开则是由名次得出该名次的排列组合

公式:康托展开值X=a[n]*(n-1)!+a[n-1]*(n-2)!+...+a[i]*(i-1)!+...+a[1]*0!

X表示该排列组合前面有X个排列组合,所以该排列组合是第X+1

a[i]表示当前未用到的元素中该元素排第几个

//阶乘
static const int Fac[]={1, 1, 2, 6, 24, 120, 720, 5040, 40320, 362880};
//康托展开
int cantor(int *a,int n){
    int x=0;
    for(int i=0;i<n;++i){
        int cnt=0;
        for(int j=i+1;j<n;++j)
            if(a[j]<a[i])cnt++;
        x+=Fac[n-i-1]*cnt;
    }
    return x;
}
//逆康托展开
void decantor(int x,int n){//x为康托展开值,n为元素个数
    vector<int>v;//存放当前可选数
    vector<int>a;//所求排列组合
    for(int i=1;i<=n;++i)v.push_back(i);
    for(int i=n;i>=1;--i){
        int l=x%Fac[i-1];
        int r=x/Fac[i-1];
        x=l;
        a.push_back(v[r]);
        v.erase(v.begin()+r);
    }
}

 

标签:int,笔记,逆康托,Fac,排列组合,展开,康托
From: https://www.cnblogs.com/bible-/p/17373204.html

相关文章

  • 【Java学习笔记】Maven项目+Junit5单元测试
    1.Maven简介;Maven概念:仓库、坐标Maven坐标:描述仓库中资源的位置Maven坐标查找:https://mvnrepository.com/Maven坐标组成:-groupId:定义当前Maven项目隶属组织名称(通常是域名反写,例如:com.Google)-artifactId:定义当前Maven项目名称(通常是模块名称)-version:定义当前Maven项目......
  • RocketMQ笔记(十一):消息存储删除机制
    RocketMQ的消息采用文件进行持久化存储。1、存储目录详情RocketMQ中默认文件存储位置/root/store,文件详情如下 commitLog:消息存储目录config:运行期间一些配置信息consumerqueue:消息消费队列存储目录index:消息索引文件存储目录checkpoint:文件......
  • OpenResty学习笔记03:深入体验WAF
    一.WAF概况  二.Lua介绍  三.文件说明  四.引用关系  五.测试&体验  六.本篇总结  ......
  • RocketMQ笔记(十):事务消息
    事务消息官网:RocketMQ官网-事务消息。一、什么是事务消息事务消息是RocketMQ提供的一种消息类型,支持在分布式场景下保障消息生产和本地事务的最终一致性。二、事务消息的原理2.1、事务消息的生命周期2.1.1、初始化半事务消息被生产者构建并完成初始化,待发......
  • RocketMQ笔记(八):顺序消息
    一、什么是顺序消息消息有序指的是可以按照消息的发送顺序来消费(FIFO)。顺序消息是RocketMQ提供的一种消息类型,支持消费者按照发送消息的先后顺序获取消息。顺序消息在发送、存储和投递的处理过程中,强调多条消息间的先后顺序关系。RocketMQ顺序消息的顺序关系通过消......
  • RocketMQ笔记(九):延时/定时消息
    一、什么是延时/定时消息定时/延时消息为RocketMQ中提供的一种消息类型。定时消息和延时消息本质相同,都是服务端根据消息设置的定时时间在某一固定时刻将消息投递给消费者消费。Producer将消息发送到消息队列RocketMQ服务端,但并不期望这条消息立马投递(被消费者消费),......
  • 工厂模式笔记
    参考教程主要参考了抽象工厂模式和工厂模式-简单工厂、工厂方法、抽象工厂解析代码部分要生产的产品packagefun.seolas.factory.simple;publicclassProduct{}/***形状产品*/interfaceShape{voiddraw();}classCircleimplementsShape{@Ov......
  • Django笔记三十五之admin后台界面介绍
    本文首发于公众号:Hunter后端原文链接:Django笔记三十五之admin后台界面介绍这一篇介绍一下Django的后台界面使用。Django自带了一套后台管理界面,可用于我们直接操作数据库数据,本篇笔记目录如下:创建后台账号以及登录操作注册后台显示的数据表列表字段的显示操作字段值......
  • 【动手学深度学习】第十二章笔记:异步计算、数据并行
    为了更好的阅读体验,请点击这里12.1编译器和解释器原书主要关注的是命令式编程(imperativeprogramming)。Python是一种解释性语言,因此没有编译器给代码优化,代码会跑得很慢。12.1.1符号式编程考虑另一种选择符号式编程(symbolicprogramming),即代码通常只在完全定义了过程之后才......
  • 【C++学习笔记】类的长度
    //空类长度是1由于可以初始化,所以必须有一个长度1class空类{}//一个函数长度是1其实函数不占长度,多个函数,长度还是为1,为了初始化,必须有一个长度。class一个函数{voidTest();}//一个虚函数类由于有一个虚函数表,所以必须长度为4,多个虚函数,也是4class一个虚函数类......