元素序列编号计算原理@位置偏移计算.md

数列/数组计数公式

讨论对象

  • 设自然数序列 1 , 2 , 3 , 4 , . . . , p − 1 , p , . . . , n − 1 , n 1,2,3,4,...,p-1,{p,...,n-1,n} 1,2,3,4,...,p1,p,...,n1,n;其中 p ⩽ n p\leqslant n pn
  • 更一般序列形式: 序列 { a n } = ⋯   , a − 1 , a 0 , a 1 , a 2 , ⋯ 序列\{a_n\}=\cdots,a_{-1},a_0,a_1,a_2,\cdots 序列{ an}=,a1,a0,a1,a2,

问题内容

  • 本文讨论"一维序列"区间元素计数与编号计算公式的相关讨论
    1. 已知序列闭区间两端元素的序号 [ p , n ] , p ⩽ n [p,n],p\leqslant{n} [p,n],pn,求该区间内包含多少个元素( l e n [ p , n ] len[p,n] len[p,n]=?);半开半闭区间又是如何?
    2. 已知某个序列区间长度 m m m和该区间的一个端点序号(坐标) n n n求另一个端点的序号 p p p=?

基本回答

  • 问题1:根据减法原理, l e n [ p , n ] = ∣ n − p ∣ + 1 len[p,n]=|n-p|+1 len[p,n]=np+1, l e n ( p , n ] = l e n [ p , n ) = l e n [ p , n ] − 1 = ∣ n − p ∣ len(p,n]=len[p,n)=len[p,n]-1=|n-p| len(p,n]=len[p,n)=len[p,n]1=np
  • 问题2:由 l e n [ p , n ] = n − p + 1 = m len[p,n]=n-p+1=m len[p,n]=np+1=m p = n + 1 − l e n [ p , n ] p=n+1-len[p,n] p=n+1len[p,n]= n − m + 1 n-m+1 nm+1

位置关系的描述

  • 为例描述序列中元素的位置关系,通常用一个整数来描述一个元素的位置,不同的元素都有不同的整数描述,我们称这样的整数为元素的序号坐标指针
  • 特别的,指针用来指示当前元素的坐标
  • 元素序列: a s , ⋯   , a e a_s,\cdots,a_{e} as,,ae是一个长度为 e − s + 1 e-s+1 es+1的元素序列,下标 s , ⋯   , e s,\cdots,e s,,e是这些元素对应的坐标
  • 起点坐标:序列的第一个元素的坐标,通常用s或S表示(start)
  • 终点坐标:序列的最后一个元素的坐标,通常用e或E表示(end)

增量

  • 为了计算一维坐标问题,引入增量 Δ = E − S \Delta=E-S Δ=ES这个概念
  • 在序列中,增量描述的是序列中某两个元素间的坐标差
  • 对于序列 a s , ⋯   , a e a_s,\cdots,a_e as,,ae, Δ ( a s , a e ) = e − s \Delta(a_s,a_e)=e-s Δ(as,ae)=es表示的是:
    • a s a_s as的指针正向移动 Δ \Delta Δ个元素后会指向元素 a e a_e ae
    • 例如,元素 a 1 → a 2 a_1\to a_2 a1a2的增量为1,记为 δ ( a 1 , a 2 ) = 2 − 1 = 1 \delta(a_1,a_2)=2-1=1 δ(a1,a2)=21=1
  • 增量也叫做序号差坐标差坐标偏移量距离

正负性

  • 增量有正负之分:对于坐标变换 a → a + Δ a\to{a+\Delta} aa+Δ
    • 序号沿着增大的方向变化的,称为正增量 Δ > 0 \Delta>0 Δ>0
    • 沿着负方向减小的方向变化的,称为负增量 Δ < 0 \Delta<0 Δ<0

序列长度和增量的关系

  • a s , ⋯   , a e a_s,\cdots,a_e as,,ae的元素数目 l e n [ e , s ] = ∣ Δ ( a s , a e ) ∣ + 1 len[e,s]=|\Delta(a_s,a_e)|+1 len[e,s]=∣Δ(as,ae)+1= ∣ e − s ∣ + 1 |e-s|+1 es+1

利用序列长度或增量计算排列数末因式

  • 例如排列数公式 A n m A_n^m Anm= n ( n − 1 ) ⋯ ( x ) {n(n-1)\cdots(x)} n(n1)(x),其中 l e n [ n , x ] = m len[n,x]=m len[n,x]=m,即 ∣ n − x ∣ + 1 = m |n-x|+1=m nx+1=m,由于 n ⩾ x n\geqslant{x} nx,所以 n − x + 1 = m n-x+1=m nx+1=m,即 x = n − m + 1 x=n-m+1 x=nm+1

  • 从而 A n m = n ( n − 1 ) ⋯ ( n − m + 1 ) A_n^m={n(n-1)\cdots(n-m+1)} Anm=n(n1)(nm+1)

  • 从增量的角度: ∣ Δ ( n , x ) ∣ = m − 1 |\Delta(n,x)|=m-1 ∣Δ(n,x)=m1,即 ∣ n − x ∣ = m − 1 , ( n ⩾ x ) |n-x|=m-1,(n\geqslant{x}) nx=m1,(nx),从而 n − x = m − 1 n-x=m-1 nx=m1,同样有 x = n − m + 1 x=n-m+1 x=nm+1

猜你喜欢

转载自blog.csdn.net/xuchaoxin1375/article/details/131838235
今日推荐