mirror of
https://github.com/TheAlgorithms/JavaScript.git
synced 2025-07-05 00:01:37 +08:00
chore: Merge pull request #776 from raghhavtaneja/raghhavtaneja-patch-1
Create RodCutting.js
This commit is contained in:
17
Dynamic-Programming/RodCutting.js
Normal file
17
Dynamic-Programming/RodCutting.js
Normal 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]
|
||||
}
|
21
Dynamic-Programming/tests/RodCutting.test.js
Normal file
21
Dynamic-Programming/tests/RodCutting.test.js
Normal 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)
|
||||
})
|
Reference in New Issue
Block a user