康托逆展开式

高斯模糊图像的复原处理 分析了几种经典图像复原算法, 在已知图像退化函数的情况下, 对高斯模糊图像分别使用逆滤 波、维纳滤波、有约束的最小二乘方滤波算法进行了复原, 在这几种算法的参数选取上得到了丰富的经 验数据。仿真结果表明, 在高噪声环境下, 维纳滤波抑制噪声的能力较强, 有约束最小二乘方滤波复原 方法保持细节效果最好。 立即下载

关于康托展开式的问题我已经在第一篇文章提到了,需要的朋友可以点进去看看。
ACM题目之排列序数
康托逆展开式就是给你一个数组,然后让你求出其全排列第n大的序列.
这里借用百度百科给的大家解释下
例1 {1,2,3,4,5}的全排列,并且已经从小到大排序完毕
(1)找出第96个数
首先用96-1得到95
用95去除4! 得到3余23
有3个数比它小的数是4
所以第一位是4
用23去除3! 得到3余5
有3个数比它小的数是4但4已经在之前出现过了所以第二位是5(4在之前出现过,所以实际比5小的数是3个)
用5去除2!得到2余1
有2个数比它小的数是3,第三位是3
用1去除1!得到1余0
有1个数比它小的数是2,第二位是2
最后一个数只能是1
所以这个数是45321
(2)找出第16个数
首先用16-1得到15
用15去除4!得到0余15
用15去除3!得到2余3
用3去除2!得到1余1
用1去除1!得到1余0
有0个数比它小的数是1
有2个数比它小的数是3 但由于1已经在之前出现过了所以是4(因为1在之前出现过了所以实际比4小的数是2)
有1个数比它小的数是2 但由于1已经在之前出现过了所以是3(因为1在之前出现过了所以实际比3小的数是1)
有1个数比它小得数是2 但由于1,3,4已经在之前出现过了所以是5(因为1,3,4在之前出现过了所以实际比5小的数是1)
最后一个数只能是2
所以这个数是14352。
code:

//康托逆展开式
//求n个数的全排列中第m大的组合:
//n>20就需要用高精度来做
#include <iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int fact[10]= {1};
int res[10];
int n,m;
int main()
{
    for(int i=1; i<=10; ++i)
        fact[i]=fact[i-1]*i;  //阶乘数组
    while(scanf("%d%d",&n,&m)!=EOF)
    {
        bool *vis=new bool[n];
        memset(res,0,sizeof(res));
        memset(vis,false,sizeof(vis));
        //先判断下m是否比n!还要大
        if(m>fact[n]){cout<<"impossible"<<endl;continue;}
        int i,j,x,t;
        m--;
        for(i=1; i<=n; ++i)
        {
            x=m/fact[n-i];
            m%=fact[n-i];
            for(j=1,t=0; t<=x; j++)
                if(!vis[j])t++;
            j--;
            res[i-1]=j;
            vis[j]=true;
        }
        for(i=0; i<n; ++i)
            printf("%d",res[i]);
        printf("\n");
    }
    // cout << "Hello world!" << endl;
    return 0;
}
高斯函数及其反函数求法 高斯函数+二分法求反函数,,,程序设计导论——————Python语言实现,课本习题。 立即下载

相关推荐

香橙派5玩转SATA SSD:一个被忽略的overlays配置项,让你的Ubuntu系统飞起来

本文详细介绍了如何在香橙派5上通过配置`overlays=ssd-sata`启用SATA SSD作为系统启动盘,大幅提升Ubuntu系统的性能。文章深入解析了设备树覆盖的工作原理,提供了完整的配置流程和性能优化建议,帮助开发者充分发挥香橙派5的硬件潜力。

weixin_30787531的博客 219

算法基础知识:康托展开与康托逆展开

康托展开 康托展开是一个全排列到一个自然数的双映射。 通俗简介 康托展开可以求解一个全排列在所有全排列中的次序,比如:(如果规定)排列12345(在1~5的所有全排列中)次序为1 ,(则)12354次序为2,按字典序增加编号递增,依次类推。 康托逆展开可以求解一个次序号对应的全排列是什么。 具体原理就不用术语来解释了,直接上栗子。 栗子 给定一个全排列,计算其字典序。直观起见,我们举例[2, 3, 4, 5,1]来说明康托展开的运算步骤(设其字典序为rank=0): 因为[2, 3, 4, 5,1]的

ZhuhaoNan134的博客 665

S32K3的STCU2模块详解:从硬件FSM到MCAL配置,搞懂BIST在线测试全流程

本文深入解析S32K3系列MCU的STCU2模块,从硬件FSM架构到MCAL配置,详细讲解BIST在线测试全流程。通过分区的安全策略和实战代码示例,帮助开发者掌握汽车电子系统中的功能安全实现,提升系统可靠性和安全性。

weixin_42525328的博客 446

(逆)康托展开

康托展开是一种全排列到自然数的映射,简而言之,康托展开就是一种计算某排列在全排列规则下的第几个。 ( 什么是全排列?例如:一个数组num[3]={1,2,3},那么它的全排列就是1 2 3,1 3 2,2 1 3,2 3 1,3 1 2,3 2 1。 #include #include using namespace std; int main() { int num[3]={1,2,3}; wh...

shawn_watson的博客 805

mysql 计算不同胜率的活跃玩家的次日,3日,7日留存率

它根据每天的日期(logymd)和最高段位(max_rank)、胜率段落(win_rate_segment)进行分组,并计算总玩家人数(total_players)、第二天的留存人数(next_day_players)、第三天的留存人数(day3_players)和第七天的留存人数(day7_players)。注意:不是新手留存,是段位活跃玩家留存;最终的结果则是将留存数据进行展示,按照日期(date)、最高段位(rank_level)、胜率段落(win_rate_segment)进行排序。

weixin_42698221的博客 1834

STM32H723ZGT6-单ADC极限采样率实战与分辨率权衡

本文通过实战测试,深入探讨了STM32H723ZGT6微控制器中单ADC模块的极限性能。文章详细展示了如何通过CubeMX配置时钟树、ADC参数、定时器触发与DMA,实测得出在16位分辨率下最高稳定采样率约为4.6MHz,而将分辨率降至8位后,采样率可提升至约6.2MHz,并分析了速度与分辨率之间的关键权衡,为高速数据采集项目提供选型与优化参考。

weixin_29240711的博客 297

康托展开和逆康托展开

简述 康托展开是一个全排列到一个自然数的双射,常用于构建hash表时的空间压缩。设有n个数(1,2,3,4,…,n),可以有组成不同(n!种)的排列组合,康托展开表示的就是是当前排列组合在n个不同元素的全排列中的名次。 原理X=a[n]*(n-1)!+a[n-1]*(n-2)!+...+a[i]*(i-1)!+...+a[1]*0! 其中, a[i]为整数,并且0 &lt;= a[i] &lt;= i,

wbin233的博客 2万+

Ghost备份还原Win10全攻略:从老电脑迁移到新硬盘,ESP分区处理是关键

本文详细介绍了使用Ghost工具将Win10系统从旧电脑迁移到新硬盘的全过程,特别强调了ESP分区的关键处理方法。通过分步指导备份、分区准备、系统还原和引导修复,帮助用户实现无缝系统迁移,解决常见问题如启动失败和驱动兼容性。

weixin_30823001的博客 672

康托展开、逆康托展开

2、现在找下一位数5,这时3已经用过了,所以从剩下的 1,2,4 里挑选比5小的数,一共3个,后面还剩三位,也就是3!3、再看第三位数2,这时3,5都用了,所以从剩下的 1,4三个数中找比4小的数的个数,有1个比4小,所以这时候也可以有 1 * 2!= 2,对于[1,2,3,4,5]数组的索引2是3,所以第一位是3。注意我们统计的是比[3,5,2,1,4]小的排列,所以最后 [3,5,2,1,4] 的排序号为 68+1 = 69。假设有个数组[1,2,3,4,5]的其中某个排列为[3,5,2,1,4]。

qq_42838399的博客 1473

第10章 shellcode实战:18 神级开源shellcode工具:donut

Donut是一款shellcode生成器,可将C/C++、C#生成的PE文件转换为shellcode文件,同时支持JS、XSL、VBS脚本转换为shellcode。以下“原生”EXE/DLL指非托管PE文件(包括并不限于C/C++、delphie等编写生成的可执行文件),可以直接由系统加载运行,区别于.Net生成的托管文件。被处理exe/dll为32位程序,则需要用32为的shellcode加载器启用,exe/dll为64位的就用64位shellcode加载器启用。

李小咖·网安技术库 2796

国科大学习资料--矩阵论(叶世伟)-期末考试题整理3

国科大学习资料–矩阵论-期末考试题整理3 国科大学习资料–矩阵论-期末考试题整理3 国科大学习资料–矩阵论-期末考试题整理3

无名何许人的博客 1402

康托展开式及其逆过程

康托展开式:   X=a[n]*(n-1)!+a[n-1]*(n-2)!+...+a[i]*(i-1)!+...+a[1]*0! ,其中a[i]表示在未出现的元素中比当前元素小的个数。康托展开式可用于求一个排列位于全排列的第几个。同样,其逆过程可以求在全排列中的第k个排列是多少。具体实现如下: 例题1: 给出一个数字n和一个排列,返回这个排列在数字1-n的全排列(按字典序)中排第几...

dengyinyi1166的博客 212

1分钟吃透一篇文献,借助AI辅助各部分精读,效率提升10倍(附AI提示词)

你现在是一名【研究领域】的资深博士,非常擅长阅读与分析长篇论文,那么接下来我会给你上传一篇论文,请你按照我的要求辅助我阅读。

qq_64378896的博客 635

UPC-取数排列(逆康托展开式)

学习犹如逆水行舟,不进则退 UPC-取数排列 康托算法 取1到N共N个连续的数字(1≤N≤9),组成每位数不重复的所有可能的N位数,按从小到大的顺序进行编号。当输入一个编号M时,就能打印出与该编号对应的那个N位数。例如,当N=3时,可组成的所有三位数为:那么,输入编号M=2时,则输出132。 输入 包括两个数,即正整数N(1 ≤ N ≤ 9)和正整数M(1 ≤ M ≤ 362880)。 输...

Round_Moon 的博客 684

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

康托展开式---我排第几+逆康托展开

之前一直不想看这个康托展开定理因为真的很不理解,但是现在还是勇敢的面对了~  {1,2,3,4,...,n}表示1,2,3,...,n的排列如 {1,2,3} 按从小到大排列一共6个。123 132 213 231 312 321 。 代表的数字 1 2 3 4 5 6 也就是把10进制数与一个排列对应起来。 他们间的对应关系可由康托展开来找到。 如我想知道321是{1,2,3}中第几

meme_y的专栏 809

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

hdu 1027 Ignatius and the Princess II 康托展开式的逆过程

康托展开式的逆过程 //康托展开式(不懂百度百科,写的很详细)这题是一个逆过程 //8位的数一共有40000多种排序远大于题目要求的10000; //所以八位以前的数不变。 #include using namespace std; __int64 fac[]={1,1,2,6,24,120,720,5040,40320,362880,362880}; int ch[1000]; int n,

asure__cpp的专栏 905

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

全排列散列 - (康托展开 和 逆康托展开)

首先明确我们要求的是什么样的题目。 例如,给定数组a[10] = {1,2,3,4,5,6,7,8,9,10}; 我们把排列{1,2,3,4,5,6,7,8,9,10}规定为0 我们把排列{1,2,3,4,5,6,7,8,10,9}规定为1 ...... 现给定排列{2,3,5,1,4,6,8,7,9,10} 代表的是多少? 当然,我们可以通过递归求解a数组的全排列,并且计数并判断当前

i逆天耗子 1259

康托展开式与其逆运算的实现

康托展开式与其逆运算的实现 【C++头algorithm函数next_permutation全排列函数传送门】 【康托展开百度百科传送门】 康托展开式,就是将一个全排列序列唯一地映射到一个整数上的一种公式 以上式的长度为3的全排列序列为例 X = a1*2! + a2*1! + a3*0! 确定 a1, a2, a3,即可确定映射后的值,假设当前排列为 2 3 1 ai的值是当前全排列序...

AKGWSB 's blog 450

判断全排列的出现次序

假如你使用模拟全排列计数,基本会超时;实现原理:康托展开式X=a[n](n-1)!+a[n-1](n-2)!+…+a[i]*(i-1)!+…+a[2]*1!+a[1]*0![1] 其中a[i]为当前未出现的元素中是排在第几个(从0开始)列如 {1,2,3} 按从小到大排列一共6个。123 132 213 231 312 321 。输入321,让你它在全排列中是第几个,321是6;具体代码:#incl

sample 820

康托展开与逆展开

本来打算总结下运算符重载,结果一个bug……为纪(记)念(恨)这道全排列的题所以我决定…… 一、康拓展开: 在上理论之前先摆出表达式: *X=a[n](n-1)!+a[n-1](n-2)!+…+a[i]*(i-1)!+…+a[1]0! 若给定一个数:bcaed (此时n为5) 通常有一个记录某个数字是否被选取的数组:num[n] (没被选取记为0,选取了记为1) a[n] 即比第n位上的b小的数的个数 a[n](n-1)即在第n位是b以前的所有排列的个数 ; a[n-1](n-2)即当第n位的数已经固定

Nkhmbkpy的博客 364

基本算法——康托展开与逆康托展开

含义   康托展开是一个全排列到一个自然数的双射,常用于构建哈希表时的空间压缩。 康托展开的实质是计算当前排列在所有由小到大全排列中的顺序,因此是可逆的。 原理   X = s1(n-1)! + s2(n-2)! + s3(n-3)! + …… + sn-1 * 1! + sn * 0!   其中si表示在第i位右边比ai小的数的个数。   我们现在用sl表示第i...

weixin_30788731的博客 395

康托展开与逆康托展开(模板)

康托展开:求一个数在全排列中的第几位。 例如{1,2,3,4,…,n}表示1,2,3,…,n的排列,12345……n,即为第0个排列。 以{1,2,3,4} 表示1,2,3,4的排列为例,求1324在全排列中的第几位。 由组合数学易得:全排列的总数为4!。 第一位有4种选法,第二位3种,第三位2种,第一位1种。 首先 1 比 它小的数是 0 个 ,比1000小的排列有0 * 3!(3!代表

Link_Ray的博客 835

【算法】康托展开和逆康托展开

文章目录康拓展开逆康拓展开 康拓展开 康托展开是一个全排列到一个自然数的双射,常用于构建hash表时的空间压缩。设有n个数(1,2,3,4,…,n),可以有组成不同(n!种)的排列组合,康托展开表示的就是是当前排列组合在n个不同元素的全排列中的名次。 康托展开也是一个数组到一个数的映射,因此也是可用于hash,用于空间压缩。比如在保存一个序列,我们可能需要开一个数组,如果能够把它映射成一个自然数...

立志如山,行道如水 734

康托展开&逆康托展开

康托展开是一个全排列到一个自然数的双射,常用于构建哈希表时的空间压缩。 康托展开的实质是计算当前排列在所有由小到大全排列中的顺序,因此是可逆的。公式 其中, 为整数,并且康托展开简单点说就是,判断这个数在其各个数字全排列中从小到大排第几位。 比如 132,在1、2、3的全排列中排第2位。康托展开求法: 比如2143 这个数: 从头开始判断, ① 比 2(第一位数)小的数有多少

ROOM 511

逆康托展开

简单介绍下:这个方法还是用例子来说比较好例1 {1,2,3,4,5}的全排列,并且已经从小到大排序完毕(1)找出第96个数首先用96-1得到95用95去除4! 得到3余23用23去除3! 得到3余5用5去除2!得到2余1用1去除1!得到1余0有3个数比它小的数是4所以第一位是4有

飘过的小牛 4060
上一篇: Sumsets
下一篇: 纷菲幻剑录 之 十年一剑
MagicScaring
博客等级 码龄11年 18粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值