【专题训练】【递推算法】 单峰排列 解题报告

【问题描述】      一个 1~n 的全排列 A[i] 是单峰的,当且仅当存在某个x使得:    A[1] A[x+1] > ... > A[n]   例如,对于9的全排列,125798643是单峰排列,123456789也是单峰排列,但356298741就不是。   试求n的单峰全排列的个数。      【输入格式】      
摘要由CSDN通过智能技术生成
【问题描述】  
  
  一个 1~n 的全排列 A[i] 是单峰的,当且仅当存在某个x使得: 


   A[1] < A[2] < ... < A[x] > A[x+1] > ... > A[n] 


  例如,对于9的全排列,125798643是单峰排列,123456789也是单峰排列,但356298741就不是。 


  试求n的单峰全排列的个数。
 
    
 【输入格式】  
  
  输入一个数n。
 
    
 【输出格式】  
   
  输出n的全排列中单峰排列的个数。由于这个数可能很大,因此你只需要输出它mod 1234567的值。
 
    
 【输入样例】   
   

 
    
 【输出样例】  
   
4
 
    
 【样例解释】  
   
  共有以下4种方案:123、132、231、321
 
    
 【数据范围】  
   
n<=2 000 000 000


解题思路:根据题意,求方案数问题,首选当然是递推算法。第一步,设状态函数,设f(i)表示1~i的单峰全排列个数。第二步,分析递推方程,因为f(i)只比f(i-1)多了一个最大的数i࿰

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值