博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
全排列的编码与解码
阅读量:7291 次
发布时间:2019-06-30

本文共 617 字,大约阅读时间需要 2 分钟。

看《算法竞赛入门经典》 第七章, 隐式图的遍历,八数码一题。

学到了全排列的编码与解码

用处: 每一个排列代表一个图的状态, 比如 8,3,2,4,5,6,7,0,1

表示成图就是

8  3  2

4  5  6

7  0  1

我们将0~8的全排列和0~9!一一映射起来

比如0, 1, 2, 3, 4, 5, 6, 7, 8 对应的就是0, 因为是第一个排列组合

那么8 7 6 5 4 3 2 1 0 对应的就是9!,因为是最后一种排列组合。

 

算法实现如下:

int fact[9];   //假设排列组合范围是0~8   void init(){
  fact[0] = 1;  for (int i = 1; i < 9; i++) fact[i] = fact[i - 1] * i;}int transfer(int ar[9]) { int code = 0; for (int i = 0; i < 9; i++) { int cnt = 0; for (int j = i + 1; j < 9; j++) if (ar[j] < ar[i]) cnt++; code += fact[8 - i] * cnt; }return code;}

 

转载于:https://www.cnblogs.com/Bowen-/p/4944893.html

你可能感兴趣的文章
MySQL 数据类型 详解
查看>>
TreeMap 的排序
查看>>
解决JOOQ的Database product name must not be null问题
查看>>
终于有人把SDH、MSTP、OTN和PTN的关系解释清楚了……
查看>>
H5面试----介绍一下 CSS 的盒子模型
查看>>
版本管理规范
查看>>
ssh登陆不需要密码(配置信任有关系)
查看>>
Kubernetes[4]—RC(复制控制器-副本集)
查看>>
Citrix XenServer 优化
查看>>
js仿京东轮播图效果
查看>>
x-manager 管理 kvm虚拟机
查看>>
MySQL同步时,出现的ERROR 1201 (HY000)错误解决方法
查看>>
TurboMail邮件系统异地分布式部署方案
查看>>
我的友情链接
查看>>
Executors.newFixedThreadPool和ArrayBlockingQueue一点使用心得
查看>>
Android异步从网络下载图片并且缓存图片到本地的demo
查看>>
Linux Shell编程入门
查看>>
JAVA调用返回XML格式数据的WebService,并通过XPath解析XML的应用
查看>>
虚拟机windows中编译环境的分辨率能否固定
查看>>
Python-函数
查看>>