一个数学问题,假如有10个数,从1开始 ,组合是这样的 [1,2],[1,3],[1,4]...[1,10],[2,3],[2,4],.....求第
不是子集, 〔1,2〕是一个元素,在上面队列中出现的位置是1 ,想通过位置求出元素中的两个值 展开
如图表格,就是你表达的意思吧。
一共有45个元素,就是1≤N≤45
第1行10-1=9个元素
第2行10-2=8个元素
……
第9行10-9=1个元素
你的问题就是要根据N求得行、列号。
需要解一个关于行数的不等式组。
设第N个元素出现在第X行。
则这个N肯定大于上一行的之前的所有元素个数之和,
肯定小于等于包括这一行以及该行之前的所有元素个数之和。
(10-X + 1 + 10-1)(X -1)/2
<N≤
(10-X + 10-1)X/2
即
(20 - X)(X - 1)/2 < N ≤ X(19 - X)/2
代入X = 1到不等式,对应第1行时,N 的取值范围就是(0,9]。
代入X = 2到不等式,对应第2行时,N 的取值范围就是(9,17]。……
因此知道了N,用此不等式就可以求得行数X。
列数 = N - (20 - X)(X - 1)/2 + X。
这个元素就是【X,N - (20 - X)(X - 1)/2 + X】
例如,N =20时,解
(20 - X)(X - 1)/2 < 20 ≤ X(19 - X)/2
得X = 3
因(20 - 3)(3 - 1)/2 = 17,3*(19 - 3)/2 = 24,17< 20 ≤24。
列数 = N - (20 - X)(X - 1)/2 + X = 20 - 17 + 3 = 6
即第20个数是第3行,第6列的数【3,6】,查表核对无误。
如果是,子集数等于(2的N次方)
(2的N次方-2)相当于去掉集合中的空集和他本身