update 0474.一和零: 优化文本,删除冗余的 go 代码

This commit is contained in:
Yuhao Ju
2022-12-21 14:00:11 +08:00
committed by GitHub
parent 02a01bb3aa
commit df5efcd1b1

View File

@ -59,7 +59,7 @@
但本题其实是01背包问题
不过这个背包有两个维度一个是m 一个是n而不同长度的字符串就是不同大小的待装物品。
不过这个背包有两个维度一个是m 一个是n而不同长度的字符串就是不同大小的待装物品。
开始动规五部曲:
@ -114,7 +114,7 @@ for (string str : strs) { // 遍历物品
有同学可能想那个遍历背包容量的两层for循环先后循序有没有什么讲究
没讲究,都是物品重量的一个维度,先遍历个都行!
没讲究,都是物品重量的一个维度,先遍历个都行!
5. 举例推导dp数组
@ -152,7 +152,7 @@ public:
## 总结
不少同学刷过这道,可能没有总结这究竟是什么背包。
不少同学刷过这道,可能没有总结这究竟是什么背包。
此时我们讲解了0-1背包的多种应用
@ -252,53 +252,6 @@ func max(a,b int) int {
return b
}
```
> 传统背包,三维数组法
```golang
func findMaxForm(strs []string, m int, n int) int {
//dp的第一个index代表项目的多少第二个代表的是背包的容量
//所以本处项目的多少是lenstrs容量为m和n
dp:=make([][][]int,len(strs)+1)
for i:=0;i<=len(strs);i++{
//初始化背包容量
strDp:=make([][]int,m+1)
for j:=0;j<m+1;j++{
tmp:=make([]int,n+1)
strDp[j]=tmp
}
dp[i]=strDp
}
for k,value:=range strs{
//统计每个字符串0和1的个数
var zero,one int
for _,v:=range value{
if v=='0'{
zero++
}else{
one++
}
}
k+=1
//计算dp
for i:=0;i<=m;i++{
for j:=0;j<=n;j++{
//如果装不下
dp[k][i][j]=dp[k-1][i][j]
//如果装的下
if i>=zero&&j>=one{
dp[k][i][j]=getMax(dp[k-1][i][j],dp[k-1][i-zero][j-one]+1)
}
}
}
}
return dp[len(strs)][m][n]
}
func getMax(a,b int)int{
if a>b{
return a
}
return b
}
```
### Javascript
```javascript