载入中...
 
     
 
载入中...
时 间 记 忆
载入中...
最 新 评 论
载入中...
专 题 分 类
载入中...
最 新 日 志
载入中...
最 新 留 言
载入中...
搜 索
用 户 登 录
载入中...
友 情 连 接
博 客 信 息
载入中...


 
 
载入中...
   
 
 
两个i之间有i个数的排列
[ 2008-7-19 7:16:00 | By: wantnon ]
 
有两个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。

--

希望能找一个不产生废品的算法,还没想到,主要问题是递推式列不出来。

 
 
 
Re:两个i之间有i个数的排列
[ 2008-7-29 22:58:19 | By: pcspcs(游客) ]
 
pcspcs(游客)直觉解决此问题一定要使用容斥原理
仅是直觉而已
 
个人主页 | 引用 | 返回 | 删除 | 回复
 
发表评论:
载入中...
 
     
   
     
Powered by Oblog.