题解
题目很简单, 乍一看也很有思路, 可很容易掉进去…
令D为abs( E - S)
, 表示, 两点的距离
假设S < E
(不影响答案)
对于任意一个方案, 一定是( D个1
径直的往右走, 剩下的(K-D)是一半是1, 一半是-1
无效的)
注意特判, K < D
无解; K-D
是奇数 无解;
错误思路
一共走K步, 其中有(D)步 是有效的, 剩下的(K - D)的无效的
C(K, D) * F
F表示(在K-D
个位置中, 有一半1 和一半的-1, 的不同排列个数; 这是可以求的)
其实这是错的…
K=3, D=1; C(K, D) = 3
, 即[1] ? ?
? [1] ?
? ? [1]
那么, 每一个? ?
, 都有2种选择: 比如 [1] 1 -1
和 1 [1] -1
, 他们就重复了!!!
还有诸多错误的做法…
其实应该从(排列)的角度去思考, 因为, 不同的方案 就是 不同的排列;
这个排列 长度为K, 且有(D个1, 和 (K-D) / 2
个1 和 (K-D) / 2
个-1), 记作: a = D + (K-D)/2
, b = (K-D)/2
即, a个1, b个-1, a + b = K
这不就简单多了…
N个不同元素的全排列个数是: N!
N个(含有相同元素)的全排列是: N! / A! / B! / C! / ...
(A, B, C .. 为每一类相同元素的个数
)
即K! / a! / b!