# 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)
点赞 1

相关推荐

04-06 11:24
已编辑
太原学院 C++
点赞 评论 收藏
分享
牛客网
牛客企业服务