chore: Merge pull request #776 from raghhavtaneja/raghhavtaneja-patch-1

Create RodCutting.js
This commit is contained in:
Rak Laptudirm
2021-10-20 15:16:04 +05:30
committed by GitHub
2 changed files with 38 additions and 0 deletions

View File

@ -0,0 +1,17 @@
/*
* You are given a rod of 'n' length and an array of prices associated with all the lengths less than 'n'.
* Find the maximum profit possible by cutting the rod and selling the pieces.
*/
export function rodCut (prices, n) {
const memo = new Array(n + 1)
memo[0] = 0
for (let i = 1; i <= n; i++) {
let maxVal = Number.MIN_VALUE
for (let j = 0; j < i; j++) { maxVal = Math.max(maxVal, prices[j] + memo[i - j - 1]) }
memo[i] = maxVal
}
return memo[n]
}

View File

@ -0,0 +1,21 @@
import { rodCut } from '../RodCutting'
test('Test Case 1', () => {
expect(rodCut([1, 5, 8, 9, 10, 17, 17, 20], 8)).toBe(22)
})
test('Test Case 2', () => {
expect(rodCut([1, 5, 4, 2, 1, 11, 19, 12], 8)).toBe(20)
})
test('Test Case 3', () => {
expect(rodCut([1, 2, 1], 3)).toBe(3)
})
test('Test Case 4', () => {
expect(rodCut([5, 4, 3, 2, 1], 5)).toBe(25)
})
test('Test Case 5', () => {
expect(rodCut([3, 5, 8, 8, 10, 16, 14, 19], 8)).toBe(24)
})