로드 절단 문제(무제한 배낭과 유사)
5725 단어 javadpalgorithms
길이
n
단위의 막대가 주어지면 막대를 다른 크기로 절단할 수 있으며 각 크기에는 관련 비용이 있습니다. 낚싯대를 잘라서 시장에 내다 팔아 얻을 수 있는 최대 비용을 결정하십시오.import java.util.*;
public class Solution {
public static int cutRod(int price[], int n) {
//intuition
/*
Since, we have to maximize the profit by cutting the rod in different length
let say length of the rod is 5
and the prices for cutting in different lengths are : 2 5 7 8 10
so we will have to keep on picking lengths(we could take a length any
no of times to maximize the profit of selling the rod) until there is no more length is left to be picked from;
This is exactly similar to unbounded knapsack problem:
*/
int dp[][] = new int[n][n+1];
for(int row []: dp) Arrays.fill(row,-1);
return maxProfit(n-1,price,n,dp);
}
public static int maxProfit(int index, int[] price,int target,int dp[][]){
if(index==0){
return (target/(index+1))*price[index];
}
if(dp[index][target]!=-1) return dp[index][target];
int take = 0;
if(target>=index+1){
take = price[index]+maxProfit(index,price,target-(index+1),dp);
}
int dontTake = 0 + maxProfit(index-1,price,target,dp);
return dp[index][target] = Integer.max(take,dontTake);
}
}
Reference
이 문제에 관하여(로드 절단 문제(무제한 배낭과 유사)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/prashantrmishra/rod-cutting-problem-similar-to-unbounded-knapsack-50ao텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)