题解 | #称砝码#

称砝码

https://www.nowcoder.com/practice/f9a4c19050fc477e9e27eb75f3bfd49c

package main

import (
	"fmt"
)

func main() {
	n := 0
	fmt.Scanf("%d", &n)
	weight, size := make([]int, n), make([]int, n)
	for i := 0; i < n; i++ {
		fmt.Scanf("%d", &weight[i])
	}
	for i := 0; i < n; i++ {
	  // 此处不能使用Scanf("%d", &size[i]) 测试用例显示是这样
		fmt.Scan(&size[i])
	}

	mp := make(map[int]bool, 0)
	res := make([]int, 0)
    res = append(res, 0)
	for i := 0; i < n; i++ {
		for j := 1; j <= size[i]; j++ {
			for _, item := range res {
				w := item + weight[i]
				if _, ok := mp[w]; !ok {
					res = append(res, w)
					mp[w] = true
                    // if sum == 12091 {
                    //     fmt.Println(size, "-=---", i,j, item)
                    // }
				}
			}

		}
	}
	fmt.Println(len(res))
}

全部评论

相关推荐

12-24 20:49
武汉大学 Java
点赞 评论 收藏
分享
A_SOUL_Off...:疑似加班加出幻觉了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务