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 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
| 2. ```go package main import ( "fmt" ) func main() { for { var n int nn, err := fmt.Scan(&n) if nn == 0 || err != nil { break } var nums []int for i := 0; i < n; i++ { var num int _, _ = fmt.Scan(&num) nums = append(nums, num) } var amount []int for i := 0; i < n; i++ { var num int _, _ = fmt.Scan(&num) amount = append(amount, num) } var weights []int for i := 0; i < n; i++ { for j := 0; j < amount[i]; j++ { weights = append(weights, nums[i]) } } fmt.Println(cnt(weights)) } } func cnt(weights []int) int { var set Set set = make(map[int]bool) set.add(0) for _, weight := range weights { var nums []int for k := range set { nums = append(nums, k+weight) } for _, v := range nums { set.add(v) } } return len(set) } type Set map[int]bool func (s Set) add(num int) { if _, ok := s[num]; !ok { s[num] = true } }
|