有两个1,两个2,...,两个n.
排成一列要求:两个i之间有i个数(i=1至n),问排法有多少种。
来源:
这里
初步想法:
首先,这样的序列是有的,例如,N=3时,312132就满足条件。
对于一般n的问题,
假设L是一个这样的序列,
命题1:将L各位数从左向右编号1,2,3,...,2n,若前面的数i的编号为b(i),则后面的数i的编号为b(i)+i+1.
证:据题意,由于前后两个i之间隔i个数,故得。
命题2: $sum_{i=1}^nb(i)=(3n^{2}-n)/4$
证:直接计算L上数字所有编号的和$s=1+2+...+2n=2n^{2}+n$...(1)
再间接计算这个和
$s=前数编号和+后数编号和
$=sum_{i=1}^nb(i)+sum_{i=1}^n(b(i)+1+i)
$=2sum_{i=1}^nb(i)+n+n(n+1)/2$...(2)
由(1)(2)得
$sum_{i=1}^nb(i)=(3n^{2}-n)/4$
推论:长度为2n的L存在的必要条件是n=4k或4k+3.
证:若不然,则n=4k+1或4k+2,由$sum_{i=1}^nb(i)=(3n^{2}-n)/4$得$sum_{i=1}^nb(i)$为分数,这是不可能的。
--
把问题说得更数学一些:
求满足下面条件的变换b的个数:当i跑遍1~n时,b(i)和b(i)+i+1跑遍1~2n。
--
希望能找一个不产生废品的算法,还没想到,主要问题是递推式列不出来。