排列序数
来源:互联网 发布:excel数据分类汇总表 编辑:程序博客网 时间:2024/04/28 12:32
排列序数
X星系的某次考古活动发现了史前智能痕迹。
这是一些用来计数的符号,经过分析它的计数规律如下:(为了表示方便,我们把这些奇怪的符号用a~q代替)
abcdefghijklmnopq 表示0
abcdefghijklmnoqp 表示1
abcdefghijklmnpoq 表示2
abcdefghijklmnpqo 表示3
abcdefghijklmnqop 表示4
abcdefghijklmnqpo 表示5
abcdefghijklmonpq 表示6
abcdefghijklmonqp 表示7
.....
在一处石头上刻的符号是:
bckfqlajhemgiodnp
请提交该整数,不要填写任何多余的内容,比如说明或注释。
这道题用康托展开式写比较简单,不过首先还是要先理解什么是康托展开式。
康托展开式:
X=an*(n-1)!+an-1*(n-2)!+…+ai*(i-1)!+…+a2*1!+a1*0!
这个式子是由1到n这n个数组成的全排列,共n!个,按每个全排列组成的数从小到大进行排列,并对每个序列进行编号(从0开始),并记为X。
比如说1到4组成的全排列中,长度为4,1234对应编号0,1243对应编号1
那a1,a2,a3,a4是什么意思呢?==>>
对1到4的全排列中,我们来考察3214,则
a4={3在集合(3,2,1,4)中是第几大的元素}=2
a3={2在集合(2,1,4)中是第几大的元素}=1
a2={1在集合(1,4)中是第几大的元素}=0
a1=0(最后只剩下一项)
则X=2*3!+1*2!+0*1!+0*0!=14,即3214对应的编号为14。
因此,此题用康托展开式就可以出来了,将abcd…写成1,2,3,4…就行了。
PS:以上这段解释是来自 JuLi距离的,我也是看他这段话才理解了康托展开式。
代码:
public class Main {/** * 阶乘方法 * @param n * @return */public static long jiecheng(int n) {if (n == 1) {return 1;}return n * jiecheng(n - 1);}public static void main(String[] args) {int[] a = { 2, 3, 11, 6, 17, 12, 1, 10, 8, 5, 13, 7, 9, 15, 4, 14, 16 };long sum = 0;for (int i = 0; i < 16; i++) {for (int j = i + 1; j < 17; j++) {int t = 0;if (a[i] > a[j]) {//求康托展开式中an的大小t++;}sum += t * jiecheng(17 - 1 - i);//康托展开式}}System.out.println(sum);}}
答案:22952601027516
0 0
- 排列序数
- 排列序数
- 排列序数
- 排列序数
- 排列序数
- 蓝桥杯 排列序数
- 标题: 排列序数
- 蓝桥杯-排列序数
- 蓝桥杯模拟-排列序数
- 蓝桥 排列序数
- 序数法生成全排列
- ACM题目之排列序数
- 蓝桥杯 历届试题 排列序数
- 蓝桥杯 2014 4 排列序数
- 蓝桥杯模拟赛排列序数
- 排列序数(康托展开)
- 我排第几个和排列序数
- 蓝桥杯模拟赛2017 排列序数
- CSS-水平/垂直居中总结
- 蓝桥杯 JAVA 打印十字图
- IE点击子div,父div不获取焦点问题的解决办法(二)
- 题目1033:继续xxx定律
- 蚂蚁感冒
- 排列序数
- 神、上帝以及老天爷
- YTU1302——泊松分酒(bfs)
- spring-boot actuator(监控)配置和使用
- Machine Learning第一讲[单变量线性回归] --(一)模型和代价函数
- HDU4717-The Moving Points
- 正则表达式
- SpringBoot笔记一
- spring-boot actuator(监控)配置和使用