第二题直接暴力dp import math nums = [1,1,1,1,1,30] max_num = max(nums) dp = [1000000]*(max_num+1) dp[1] = 0 for i in range(2,max_num+1): for j in range(1,math.floor(math.sqrt(i))+1): if i % j ==0: x = i//j dp[i] = min(dp[j]+dp[x]+1,dp[i]) dp[i] = min(dp[i], dp[i-1]+1) res = 0 for num in nums: res += dp[num] print(dp,res)
点赞 5

相关推荐

用微笑面对困难:你出于礼貌叫了人一声大姐,大姐很欣慰,她真把你当老弟
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务