已知组合求序号的算法有1,2,3,4,5,6个数选3进行组合可得:1 2 3 1 2 4 1 2 5 1 2 6 1 3

已知组合求序号的算法
有1,2,3,4,5,6个数选3进行组合可得:
1 2 3
1 2 4
1 2 5
1 2 6
1 3 4
1 3 5
1 3 6
1 4 5
1 4 6
1 5 6
2 3 4
2 3 5
2 3 6
2 4 5
2 4 6
2 5 6
3 4 5
3 4 6
3 5 6
4 5 6
-------
从上至下排序为1-20,例如:3 4 6的序为18
那么请问:已知3,4,6,如何计算出序号?
f(3,4,6)=18 是如何算出来了.
请注意,是组合,不是排列。
6选3组合只有20种。
lemongo2006 1年前 已收到2个回答 举报

hr1984 幼苗

共回答了24个问题采纳率:91.7% 举报

定义函数
f1(x) = 1/6 x (1 + x) (2 + x);
f2(x) = 1/2 x (1 + x);
f3(x) = x;
再定义函数gi(n)表示小于第i位n的所有数的个数,则
g1(x,y,z) = (f1(6 - 2) - f1(6 - 1 - x));
g2(x,y,z) = (f2(6 - 1 - x) - f2(6 - y));
g3(x,y,z) = (f3(6 - y) - f3(6 + 1 - z));
于是在数字(x,y,z)前面的数字个数为
g(x,y,z) = g1(x,y,z) + g2(x,y,z) + g3(x,y,z)
数字(x,y,z)排在第f(x,y,z)=g(x,y,z)+1位.
解得
数字排序数
f(x,y,z)
=20 + 1/2 (5 - x) (6 - x) - 1/6 (5 - x) (6 - x) (7 - x) - 1/2 (6 - y) (7 - y) - y + z
=1/6 (-126 + 74 x - 15 x^2 + x^3 + 33 y - 3 y^2 + 6 z)
下面是验证的结果:
{ f(x,y,z),x,y,z,}
{1,1,2,3},
{2,1,2,4},
{3,1,2,5},
{4,1,2,6},
{5,1,3,4},
{6,1,3,5},
{7,1,3,6},
{8,1,4,5},
{9,1,4,6},
{10,1,5,6},
{11,2,3,4},
{12,2,3,5},
{13,2,3,6},
{14,2,4,5},
{15,2,4,6},
{16,2,5,6},
{17,3,4,5},
{18,3,4,6},
{19,3,5,6},
{20,4,5,6}
做了2个小时,强烈要求再加分.

1年前

1

zurigo 幼苗

共回答了560个问题 举报

有1,2,3,4,5,6个数选3进行组合可得到6*5*4=120个不同的数
1,2,3,4,5,6在百位上各有120/6=20个
从小到大排列,1,2在百位有40个,3在百位的是从41位开始:
1,2,4,5,6在十位各有20/5=4个
1,2在十位共有2*4=8个(第48个为326)
第49,50,51,52个分别是:341,342,345,34...

1年前

2
可能相似的问题
Copyright © 2022 YULUCN.COM - 雨露学习互助 - 17 q. 0.015 s. - webmaster@yulucn.com