1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| func findMaxForm(strs []string, m int, n int) int { dp := make([][]int, m+1) for i := range dp { dp[i] = make([]int, n+1) }
for _, str := range strs { zero, one := cnt(str) for i := m; i >= zero; i-- { for j := n; j >= one; j-- { dp[i][j] = max(dp[i][j], dp[i-zero][j-one]+1) } } } return dp[len(dp)-1][len(dp[0])-1] }
func max(a, b int) int { if a > b { return a } return b }
func cnt(s string) (zero, one int) { for _, v := range s { if v == '0' { zero++ } else { one++ } } return }
|