동적 계획 - 채굴 문제

6332 단어 동적 계획
한 나라 에서 W 개의 금광 을 발 견 했 는데 금광 마다 금 매장량 이 다 르 고 발굴 에 참여 해 야 하 는 노동자 수도 다르다.채굴 에 참여 한 노동자 의 총 수 는 P 명 이다. 금광 을 모두 캐 거나 캐 지 않 으 면 절반 을 보 내 금광 을 캐 낼 수 없다.가능 한 한 많은 금 을 얻 으 려 면 어떤 금광 을 캐 야 하 는 지 절차 적 으로 풀 어야 한다.
#    :m:        n:        p[]:              c[]:        
m,n=5,10
def mining(p=[]*m,c=[]*m):
    preresult= [0] * n
    result = [0] * n
    for i in range(n):
        if i+1<p[0]:
            result[i]=0
        else:
            result[i]=c[0]

    for i in range(m):
        for j in range(n):
            if j+1<p[i]:
                result[j]=preresult[j]
            else:
                result[j]=max(preresult[j], preresult[j-p[i]+1] + c[i])

        preresult= result
    # print result
    return result[n-1]

p1=[5,5,3,4,3]
c1=[400,500,200,300,350]
print (mining(p1,c1))

p1=c1
print max(1,1+2)


좋은 웹페이지 즐겨찾기