# Python动态规划解法,比较通用,题目类似找零钱问题 import sys n = int(sys.stdin.readline().strip()) def buy_nails(nails, target):     dp = [target + 1] * (target + 1)     # 初始化很重要     dp[0] = 0     for i in range(1, len(nails) + 1):         for j in range(1, target + 1):             if j >= nails[i - 1]:                 dp[j] = min(dp[j], dp[j - nails[i - 1]] + 1)     min_num = dp[-1]     if min_num < target + 1:         return min_num     else:         return -1 nails = [4, 9] dp = buy_nails(nails, n) print(dp)
点赞 评论

相关推荐

03-16 22:00
武汉大学 C++
幸福的小熊猫想要offer:我阿里投的 c++岗,面试官说自己是做 java 的,c++这辈子才有了
点赞 评论 收藏
分享
03-10 14:19
已编辑
重庆邮电大学 前端工程师
球Offer上岸👑:测试也难求一面 逆天
点赞 评论 收藏
分享
牛客网
牛客企业服务