79分求助(用了DFS)
查看原帖
79分求助(用了DFS)
1226745
Level5_Accelerator楼主2024/7/19 11:32
catnum, maxw = map(int, input().split())
cat = []
for _ in range(catnum):
    cat.append(int(input()))

cats = sorted(cat, reverse=True)
cars = [[]]

def dfs(m,n):
    global maxw
    if m > len(cats)-1 or n == len(cats):
        print(n)
        return
    else:
        w = cats[m]
        for i in range(n):
            if w <= maxw - sum(cars[i]):
                cars[i].append(w)
                dfs(m+1,n)
                break
        else:
            cars.append([])
            cars[-1].append(w)
            dfs(m+1,n+1)
dfs(0,1)

m是即将上车的猫的下标,n是已有的车数。14个测试点有3个WA,其它都是AC,求大佬指正

2024/7/19 11:32
加载中...