题解 | #购物单#

购物单

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

package main

import (
	"bufio"
	"fmt"
	"os"
	"strconv"
	"strings"
)


func main() {
	input := bufio.NewScanner(os.Stdin)
	input.Scan()
	d := input.Text()
	str := strings.Split(d, " ")
	N, _ := strconv.Atoi(str[0]) //钱
	//m, _ := strconv.Atoi(str[1]) //物品数量
	first := make(map[int][2]int)//主键
	second := make(map[int][]int)//附件

	//现在要把多个物品归类,分别放到first,second里面
    i:=1
	for input.Scan() {
		d := input.Text()
		str := strings.Split(d, " ")
        data1, _ := strconv.Atoi(str[0])
        data2, _ := strconv.Atoi(str[1])
		if str[2] == "0" {
			//说明他是主键
			first[i] = [2]int{data1, data2}
		} else {
			//说明他是附件
			//判断是不是第一个附件
			t, _ := strconv.Atoi(str[2])
			_, ok := second[t]
			if !ok {
				second[t] = make([]int, 0)
				second[t] = append(second[t], data1, data2)

			} else {
				second[t] = append(second[t], data1, data2)
			}
		}
        i++
	}
		all := make(map[int][][2]int)
		//分类完毕以后把让他们跟随附属物品然后计算一个总价格和对应的满意度
		//根据主键分
		for key, value := range first {
			all[key] = make([][2]int, 1)
			all[key][0][0] = value[0]
			all[key][0][1] = value[1]*value[0]
			//判断该主是否有副
			_, ok := second[key]
			if ok {

				all[key] = append(all[key], [2]int{value[0]+second[key][0],value[0]*value[1]+ second[key][0]*second[key][1]})
				if len(second[key]) == 4 {
					all[key] = append(all[key], [2]int{value[0]+second[key][2],value[0]*value[1]+ second[key][2]*second[key][3]})
					all[key] = append(all[key],[2]int{value[0]+second[key][0]+second[key][2],value[0]*value[1]+ second[key][0]*second[key][1]+second[key][2]*second[key][3]})
				}
			}
		}
    //我不知道怎么开辟一个数组可以用变量导入我是个废物
	dp := make([]int,0)
	for i:=0;i<=N;i++{
		dp = append(dp, 0)

		}

    //所有物件处理完毕,开始动态规划
    for _,value:= range all{
		for i:=N;i>=0;i=i-10{
			//这边只是根据题求了10的倍数,但是最好可以求以下商品的公因数,说不定会比10要大
			for _,j:=range value{
				if i - j[0]>=0{
					if dp[i]<dp[i-j[0]]+j[1]{
						dp[i] = dp[i-j[0]]+j[1]
					}
				}
			}

		}
	}
    fmt.Println(dp[N])
	
}

全部评论

相关推荐

2024-12-27 10:21
已编辑
海南师范大学 媒介策划
到我怀里来:身高体重住址这些就别写了,留几个关键的就行,工作经历突出重点写详细点
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务