【求助】蓝桥杯算法练习-YBH数数

问题描述
  YBH数学很差,她数数时分不清4,5和8;我们定义YBH[i]为YBH的计数法对应的i的值。
  规定:YBH[4] = 5,YBH[5] = 8;YBH[i]运算规则如下:
  ① YBH[i+j] = YBH[i] + YBH[j]
  ② YBH[i*j] = YBH[i] * YBH[j]
  我们会发现,用不同方法算出的YBH[i]的值是不同的,例如:当i=20时,
  YBH[20] = 5*YBH[4] = 25;
  YBH[20] = 4*YBH[5] = 32;
  YBH[20] = YBH[4] * YBH[5] = 40;
  ......
  我们规定:F[i]为YBH[i]的最大值,现在请你编写一个程序,输入一个数n,输出F[n]的值,若F[n]没有意义,输出-1。

输入格式
  一个数n(8 <= n <= 1000)

输出格式
  输出F[n]的值.

样例输入
20

样例输出
40

样例输入
11

样例输出
-1

数据规模和约定
  8 <= n <= 1000

尝试解答:(这个解答平台没有给通过😢😢😢 但是尝试了一下感觉测试点是对的,如果有大佬可以解答一下,不胜感激🤞😶‍🌫️

import math
n=int(input())
dp= [-1 for i in range (1001)]
dp[4]=5
dp[5]=8
for i in range(6,n+1):
    a1=a2=a3=a4=-1
    if dp[i-4]!=-1:
        a1=dp[i-4]+dp[4]
    if dp[i-5]!=-1:
        a2=dp[i-5]+dp[5]
    if i%4==0 and dp[i//4]!=-1:
        a3=dp[i//4]*dp[4]
    if i%5==0 and dp[i//5]!=-1:
        a4=dp[i//5]*dp[5]
    dp[i]=max(a1,a2,a3,a4)
print(dp[n])


 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值