康托展开
http://zh.wikipedia.org/wiki/康托展开
http://www.nocow.cn/index.php/康托展开
http://blog.sina.com.cn/s/blog_4bf7b6580100l2zs.html
http://www.cnblogs.com/1-2-3/archive/2011/04/25/generate-permutation-part2.html
#include<cstdio> #include<cstring> #include<iostream> #include<string> #include<algorithm> using namespace std; int fac[] = {1,1,2,6,24,120,720,5040,40320}; //i的阶乘为fac[i] int cantor(int s[],int n) { int num=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++;//判断几个数小于它 } num+=fac[n-1-i]*temp; } return(num+1); } void uncantor(int s[], int n, int k) { k--; bool vis[8]={0}; for(int i=n-1;i>=0;i--) { int x=k/fac[i]; for(int j=0;j<=x;j++) if(vis[j]) x++; s[n-1-i]=x+1; vis[x]=1; k%=fac[i]; } } int main() { int s[]={1, 2, 3, 4}; int n=sizeof(s)/sizeof(int); do { printf("%d\n", cantor(s, n)); }while(next_permutation(s, s+n)); for(int k=1;k<=24;k++) { uncantor(s, 4, k); for(int i=0;i<4;i++) { printf("%d ", s[i]); } printf("\n"); } return 0; }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· Spring AI + Ollama 实现 deepseek-r1 的API服务和调用
· 数据库服务器 SQL Server 版本升级公告
· 程序员常用高效实用工具推荐,办公效率提升利器!
· C#/.NET/.NET Core技术前沿周刊 | 第 23 期(2025年1.20-1.26)
2012-04-24 ubuntu中设置synergy自动开机启动
2012-04-24 为Ubuntu配置远程X访问(XDMCP & Xming)
2012-04-24 Windows下运行XServer