郁郁青青 长过千寻

康托展开

    离散数学

  1. 多用
    1. FAC(n)
  2. 编码
    1. CT(Z)
  3. 解码
    1. CT(Z)

多用

FAC(n)

1
2
3
4
5
初始化数组f用于存放阶乘
f[0]=1
for i=1 to n-1
f[i]=f[i-1]*i
return f

编码

CT(Z)

1
2
3
4
5
6
7
8
9
10
l=z.len
FAC(l)
初始化res=0
for i=0 to l-1
count=0
for j=i+1 to l-1
if z[j]<z[i]
count=count+1
res=res+f[n-i-1]*count
return res

解码

CT(Z)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
初始化数组res用于存放第n个z
初始化数组book全部置0用于标记
l=z.len;
FAC(l)
sort(z);
for i=0 to l-1
t=n/f[l-i-1]
for j=0 to l-1
if !book[j]
if t==0
break
t=t-1
res[i]=z[j]
book[j]=1
n=n%f(l-i-1)
return res
页阅读量:  ・  站访问量:  ・  站访客数: