排列问题

      在整数1,2,...,N的排列中,有些排列满足下面一个性质A:该排列中除了最后一个整数外的每一个整数后面都跟有一个与它相差为1的数字。设有N个数字,已知一部分位置上的数,求满足性质A的排列有多少个?

     

分析:假设只有一个数字, 即N=1,则满足A条件。若只有两个数字,则一定满足。若有三个数字,不论最后一个数字是什么,满足A条件的后缀序列必然是连续数字组成的集合。例如3个数字的时候,后两个数字不可能为(1,3)。根据这个属性我们设计动态规划算法。

假设

       f(s,r)表示范围在[s,s+r-1]的数字组成的满足A性质的串的数量。

      

       则                                      f(s+1,r-1)                  若r位置确定为s

                         f(s,r)=             f(s,r-1)                       若r位置确定为s+r-1

                                                f(s+1,r-1)+f(s,r-1)     若r位置没有确定

 

       以前也做过这道题,

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章