n个人排名,名次相同不记次序,求可能出现的排名结果

1.解决办法:动态规划

拿到这道题的第一反应是只用小于号和等于号连接,转换为求排列数的问题,但是又一细想发现涉及到等号的个数,等号相邻问题以及重复问题,问题变得非常复杂,故而放弃。

还好有大神出来讨论,特此记录学习到的东西以求自勉。

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------那么就需要换一种思考问题的切入点了:

用dp[m][n]表示n个人,m个名词的情况,那么有以下关系成立:

dp[1][n]=1                  #所有人并列一个名次

dp[n][n]=n!                 #每个人名词都不相同,转换为求全排列数的问题

dp[m][n]=m*dp[m][n-1]+m*dp[m-1][n-1]       #状态转移方程   n>m>1

解释一下第三个式子:

对于n个人排m个名次的情况,假设n-1个人的名次已经排好,此时会出现两种情况:

(1)n-1个人已经排好了m个名次,那么第m个人的名次一定是这m个名次中的一个,一共有m*dp[m][n-1]种排序情况;

(2)n-1个人排好了m-1个名次,第n个人是一个新的名次,这个名次一可能存在的顺序在前面的m-1个名次中插空,

一共有m*dp[m-1][n-1]种排序情况.

所以对于

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值