3个递推和递归题目:紧密数、排队问题、表达式计数

1.紧密数

给出一个数字字符集{0, 1, ... , k}, 0 <= k <= 9 .如果由这个集合上的字符组成长度为n的数字中,任意相邻的字符数字差不超过1,则称该数为紧密的。如k=4,n=5时,12343就是一个紧密的数,而12340不是一个紧密的数。

    输入2个整数k与n,1 <= n <= 100.输出由字符集{0,1, ... , k}构成的长度为n的紧密数个数占长度为n的数字总数的百分比,精确到小数点后5位。

样例输入               样例输出

4 1                        100.00000

2 5                       40.74074

3 5                       17.38281

8 7                       0.10130


分析:如果第一个数为0或者k,那么第二个数都只有两种可能——0,1或者k-1,k。如果第一个数为j(0<j<k),那么第二个数有三种可能——j-1,j, j+1.

若用 cnt[i-1][j] 表示当前第i个数取j的可能数,那么cnt[0][j] 都为1。依上分析,cnt[1][0] = cnt[0][0] + cnt[0][1] ,cnt[1][k] = cnt[0][k-1][k+1],cnt[1][j] &

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值