问题描述:
一组包含 N 个整数的列表,i1,i2,....,iN
从0<= i1<=i2<=i3<=....<=iN <=M
一个整数 开始0<=i1<=M
,并重复添加一个大于或等于最后添加的整数的整数。添加最后一个整数以获得最终列表集时,索引从0 to BinomialC[M+N,N)]-1
.
For example, for M=3, i1=0,1,2,3
所以列表是
{0},{1},...,{3}.
添加另一个整数i2>=i1
将导致
{0,0},{0,1},{0,2},{0,3},
{1,1},{1,2},{1,3},
{2,2},{2,3}
{3,3}
带索引
0,1,2,3,
4,5,6,
7,8,
9.
这个索引可以用 i1,i2,...,iN 和 M 来表示。如果条件 >= 不存在,那么它就是i1*(M+1)^(N-1)+i2*(M+1)^(N-2)+...+iN*(M+1)^(N-N)
. 但是,在上述情况下,由于限制,指数出现了负向变化。例如,N=2,移位为 -i1(i1+1)/2,索引为i = i1*(M+1)^1 + i2*(M+1)^0 -i1(i1+1)/2.
问题: 有谁特别是有数学背景的人知道如何为一般的 N 元素情况编写索引?还是只是最后的表达?任何帮助将不胜感激!谢谢!