70. 爬楼梯
题目链接:70. 爬楼梯
使用完全背包的思想来写这一题目,但是比之前的要慢。
class Solution(object):
def climbStairs(self, n):
"""
:type n: int
:rtype: int
"""
dp=[0]*(n+1)
dp[0]=1
m=2
for i in range(n+1):#遍历容量
for j in range(1,m+1):
if i>=j:
dp[i]+=dp[i-j]
return dp[-1]
322. 零钱兑换
题目链接:322. 零钱兑换
class Solution(object):
def coinChange(self, coins, amount):
"""
:type coins: List[int]
:type amount: int
:rtype: int
"""
dp=[10**5]*(amount+1)
dp[0]=0
for i in range(len(coins)):
for j in range(coins[i],amount+1):
dp[j]=min(dp[j],dp[j-coins[i]]+1)
return dp[-1] if dp[-1] !=10**5 else -1
里面dp[j-coins[i]]+1 中,+1表示这个数放不放。
279. 完全平方数
题目链接:279. 完全平方数
这一题与上面一题差不多,先排列好要选的数字,然后寻找最小值。
class Solution(object):
def numSquares(self, n):
"""
:type n: int
:rtype: int
"""
nums=[i**2 for i in range(1,101)]
#n = 12
dp=[10**5]*(n+1)
dp[0]=0
for i in range(len(nums)):
for j in range(nums[i],n+1):
dp[j]=min(dp[j],dp[j-nums[i]]+1)
return dp[-1]