目錄
前言🫠
模版例題:
Python3代碼:
隨著Python語言的熱度上升,將來將會有越來越多的小伙伴入坑Python。因為它不僅是一門編程語言,更是一個強大的武器。對於非計算機專業的理工科學生來說,可以學不會C 但必須要懂Python。因為不管是 人工智能 / 深度學習 / 爬蟲 / 數據分析 等等領域都離不開對於Python的使用。
而深入了解並掌握一門編程語言,最好的方法就是學算法。y總曾舉過一個例子 如果做一個Django框架 寫一個Web網頁的難度是100分,那麼數據結構與算法就是5000分。而且算法 是入職幾乎必須掌握的知識 面試中常有用到。
本專欄的目的旨在於幫助想使用Python作為主語言的小伙伴快速上手數據結構與算法,因為目前用Python寫算法還不是很普遍,網上也很難找到相關的資源,大部分都是C++和Java的。對於剛入坑的小白而言,無疑是一件難事。
在本專欄中,共有三十講,都是一些經典算法或數據結構的入門。然而,相關算法的對應知識點我可能不會詳細進行講解,因為網上已經有很多優秀的講解了。但我會將這個數據結構或算法的Python實現展示出來 並配有模版例題。代碼會有詳細注釋,只要你懂Python語法,看過了這個算法的實現方式,我保證你能看得懂對應的Python代碼。
祝 學習愉快
有 N 種物品和一個容量是 V 的背包,每種物品都有無限件可用。
第 i 種物品的體積是 vi,價值是 wi。
求解將哪些物品裝入背包,可使這些物品的總體積不超過背包容量,且總價值最大。
輸出最大價值。輸入格式
第一行兩個整數N,V,用空格隔開,分別表示物品種數和背包容積。
接下來有 N 行,每行兩個整數 vi,wi,用空格隔開,分別表示第 ii 種物品的體積和價值。
輸出格式
輸出一個整數,表示最大價值。
數據范圍
0<N,V≤1000
0<vi,wi≤1000輸入樣例
4 5 1 2 2 4 3 4 4 5
輸出樣例:
10
N = 1010
n,m=map(int,input().split())
v=[0 for i in range(N)]
w=[0 for i in range(N)]
# 前i個物品中選且背包容積為j的最大價值
dp=[[0 for i in range(N)] for j in range(N)]
for i in range(1,n+1):
vv,ww=map(int,input().split())
# 第i個物品的體積和價值
v[i]=vv
w[i]=ww
# 通用的狀態轉移方程
for i in range(1,n+1) :
for j in range(m+1) :
dp[i][j] = dp[i-1][j]
if j >= v[i]:
dp[i][j] = max(dp[i][j],dp[i][j-v[i]]+w[i])
print(dp[n][m])