#-*-maplev-*-#纳撒尼尔·沙尔#原版:2014年12月#当前版本:2015年3月6日################################################################################生成序列A248900的Maple代码(避免2431和54321的排列)#使用说明:ENUM(n)产生第n个术语。#以n为单位运行时间多项式(但仍然很慢)。################################################################################通过计算{2311234}上的某些行走次数来工作-避免#排列,具有<=3的有序森林结构#树叶。参见即将发表的论文。该方法可以推广到#计数避免2431和k(k-1)(k-2)的排列。。。21; 的程度#多项式的运行时间随着k的增加而增加。#该方法还可用于计算避免{4231、,#51234}(以及通常的{4231,n123…(n-1)}),但#这是较慢的。#“class”变量对森林进行了广泛描述,并且(i,#j,k)是支路长度的参数。中的数字#方括号[]表示必要的参数数量#描述一下森林。已使用快捷方式来避免存储#森林的完整描述;只有必要的属性#已被保存。#A类:一根秸秆[1]#B类:两茎[2]#C类:三茎[3]#D类:一个T(2)(减至A)[2]#E类:一个茎秆,然后是一个T(2)(减为B)[3]#F类:一个T(2),然后一个茎秆(减为D)[3]#G类:一个T(3)(减少到D)[3]###############################################################################ENUM:=proc(n,class:=“A”,i:=0,j:=0、k:=0)局部T:选项记住:如果n=1,则:返回1:其他:T:=0:#上升如果class=“A”,则:如果i=0,则:T:=T+ENUM(n-1,“A”,1):其他:T:=T+ENUM(n-1,“A”,i+1)+ENUM(n-1、“B”,i,1):图1:elif class=“B”则:T:=T+ENUM(n-1,“B”,i,j+1)+ENUM(n-1,“D”,i+1,j)+ENUM(n-1,“C”,i,j,1):elif class=“C”则:T:=T+ENUM(n-1,“C”,i,j,k+1)+ENUM(n-1、“E”,i、j+1,k)+ENUM(n-1;“G”,i+1,j,k):elif class=“D”则:T:=T+ENUM(n-1,“D”,i+1,j)+ENUM(n-1、“F”,i,j,1):elif class=“E”则:T:=T+ENUM(n-1,“E”,i,j+1,k)+ENUM(n-1、“G”,i+1,j,k):elif class=“F”则:T:=T+ENUM(n-1,“F”,i,j,k+1)+ENUM(n-1、“G”,i+1,j,k):elif class=“G”则:T:=T+ENUM(n-1,“G”,i+1,j,k):图1:#下降T:=T+add(ENUM(n-1,pair[1],op(pair[2])),prec中的pair(class,i,j,k)):T:=T+ENUM(n-1,类,i,j,k):图1:返回T:结束时间:prec:=proc(类,i:=0,j:=0、k:=0)选项记住:如果i=0,则:返回{}:图1:如果class=“A”,则:return{[“A”,i-1]}联合前缀(“A”、i-1):elif class=“B”则:如果j=1,则:return{[“A”,i]}联合前缀(“A”、i):其他:return{[“B”,[i,j-1]]}联合前缀(“B”、i,j-1):图1:elif class=“C”则:如果k=1,则:return{[“B”,[i,j]]}联合前缀(“B”、i,j):其他:return{[“C”,[i,j,k-1]]}联合前缀(“C”、i、j,k-1):图1:elif class=“D”则:如果j=1,则:return{[“A”,i]}联合前缀(“A”、i):其他:return{[“D”,[i,j-1]]}联合前缀(“D”、i,j-1):图1:elif class=“E”则:如果k=1,则:return{[“B”,[i,j]]}联合前缀(“B”、i,j):其他:return{[“E”,[i,j,k-1]]}联合前缀(“E”、i、j,k-1):图1:elif class=“F”则:如果k=1,则:return{[“D”,[i,j]]}联合前缀(“D”、i,j):其他:return{[“F”,[i,j,k-1]]}联合前缀(“F”、i、j,k-1):图1:elif class=“G”则:如果k=1,则:return{[“D”,[i,j]]}联合前缀(“D”、i,j):其他:return{[“G”,[i,j,k-1]]}联合前缀(“G”、i、j,k-1):图1:图1:结束时间: